|
0 / 0 / 0
Регистрация: 17.09.2020
Сообщений: 1
|
||||||
Правильно ли я понимаю код?12.02.2023, 14:11. Показов 3434. Ответов 27
Метки нет (Все метки)
Наткнулся на просторах Интернета на функцию, которая необходима мне для решения задачи. Функция получает бит из числа типа double и имеет следующий вид:
Первая строка понятна: создаем маску битовой операцией. Вторая строка тоже, очевидно, понятна. Затем идет ветвление. При номере бита меньше 32 мы берем указатель на переменную d, присваиваем ему тип unsigned, затем разыменовываем и, что тоже понятно, "логически умножаем" на маску. Хотелось бы понять, что делает конструкция (*(unsigned *)d). Насколько я понял, она рассматривает участок памяти, выделенный под d, но представляет его как будто бы d - число типа unsigned. А затем происходит уже само сравнение с маской. При бите больше 32 мы смотрим следующие 4 байта, так как unsigned занимает в памяти 4 байта, а double - 8. Также не очень понятно, почему программа не работает с "переводом" d в unsigned long long, который тоже занимает 8 байт, что помогло бы избежать ветвления. Прошу Вас оценить мои рассуждения, и исправить меня, если где-то я неправ.
0
|
||||||
| 12.02.2023, 14:11 | |
|
Ответы с готовыми решениями:
27
Правильно ли я понимаю ссылки и указатели. Работу с ними. Я сам прокомментировал код. Скажите правильно или нет. есть код функции который шифрует строку,я правильно понимаю что если в строке Правильно ли я понимаю, что XmlTextWriter весь получаемый текст при выводе транслирует в HTML-код? |
|
371 / 227 / 53
Регистрация: 18.10.2017
Сообщений: 2,436
|
|
| 15.02.2023, 08:34 | |
|
TheCalligrapher, вполне определённое поведение. double - 8 байтов, unsigned - 4 байта, за пределы double функция не выходит.
Хотя, конечно, надёжнее u_int32_t. Надо ещё узнать о существовании stdbool.h. Мне в программах на C редко когда требовался тип bool, а когда требовался, я подключал свой bool.h. И вообще адресуемой единицей является не бит, а, скажем, 4 байта, так что я не вижу выигрыша в использовании _Bool. Вот для меня самоочевидно, что исходный код - профессиональный, а предложенные варианты - наскоро сделанные поделки.
0
|
|
|
фрилансер
6503 / 5746 / 1134
Регистрация: 11.10.2019
Сообщений: 15,391
|
|
| 15.02.2023, 08:41 | |
|
peter_irich, вот на русском языке. Вникай, пригодится. Нет смысла упираться рогом, а потом удивляться, что программа не работает внезапно
0
|
|
|
Вездепух
13216 / 6848 / 1826
Регистрация: 18.10.2014
Сообщений: 17,369
|
||||
| 15.02.2023, 09:19 | ||||
unsigned на память, занятую double (кроме как через union).bool и не оговорено иначе, то это bool из <stdbool.h>, ссылающийся на _Bool. Все остальное - это пустая болтовня ни о чем.
0
|
||||
|
371 / 227 / 53
Регистрация: 18.10.2017
Сообщений: 2,436
|
|
| 15.02.2023, 13:41 | |
|
TheCalligrapher, если и запрещается, в рассматриваемом случае это вреда не причиняет.
0
|
|
| 15.02.2023, 15:27 | |
|
0
|
|
|
371 / 227 / 53
Регистрация: 18.10.2017
Сообщений: 2,436
|
|
| 15.02.2023, 21:32 | |
|
TheCalligrapher, я твёрд умом. И не вижу разницы, получать доступ через указатель или через union.
0
|
|
|
Вездепух
13216 / 6848 / 1826
Регистрация: 18.10.2014
Сообщений: 17,369
|
||
| 15.02.2023, 21:36 | ||
|
Почему такое накладывание типов друг на друга не разрешается в языке (кроме специально оговоренных способов) - тема тоже вполне понятная. Это позволяет компилятору существенно лучше оптимизировать код.
0
|
||
|
371 / 227 / 53
Регистрация: 18.10.2017
Сообщений: 2,436
|
|
| 15.02.2023, 22:54 | |
|
TheCalligrapher, в данном случае требовалось только прочитать.
Какая разница, читать unsigned int откуда-то из памяти или из явно отведённого места, что тут оптимизировать. Это в DOS были сегменты и способы адресации. На вид исходный вариант проще, но насчёт оптимизации ничего утверждать не могу. Я и сам использую union.
0
|
|
| 15.02.2023, 22:54 | |
|
Нашел код, он рабочий но я его не понимаю. Объясните код пожалуйста исправьте код или напишите заново код пожалуйста(не совсем понимаю,как это делать)
ВЧ СЧ НЧ Правильно ли я понимаю? я правильно понимаю? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|