Каков точный двоичный формат unsigned long long
тип (по крайней мере, в визуальной студии).
Я делаю некоторую побитовую операцию с указателями псевдонимов, я устанавливаю бит с помощью операций на unsigned char
указатели затем делают некоторые другие операции над unsigned long long
указатели (псевдоним).
Формат unsigned long long
выглядит странно и из-за этого портит результаты, также кажется, что операция сдвига битов также ведет себя странно:
Из теста битовой маски кажется, что эти данные расположены из right: LSB->MSB : left
, что означает, что сдвиг >> переводит данные в более значимый бит, а не в младший, верно?
Компилятор ICC 13.0, а ОС Windows 7-64.
Байтная схема, которую вы описываете, имеет порядок байтов, который обычно используют процессоры Intel. Сдвиги битов зависят не от расположения в памяти числа, а от значения, поэтому порядковый номер не должен влиять на стоимость ваших операций. Если вы используете псевдоним указателя, однако, как приведение к char *
и используя арифметику указателей для извлечения ее сегментов, вы получите поведение, зависящее от порядка байтов, которое на процессорах Intel с младшим порядком байтов может не соответствовать ожидаемому.
Других решений пока нет …