[an error occurred while processing this directive]
|
Стандарт требует, чтобы представление целых было двоичным и еще термины, которые я не помню в деталях. В двух словах, из всего этого следует, что сдвиг unsigned int вправо на N бит, где N меньше разрядности представления целого, эквивалентен делению числа на 2^N. Это будет верно для любой реализации С, совместимой со стандартом. Сдвиг вправо отрицательных signed int уже nonportable, так как стандарт оставляет на усмотрение реализации, сдвиг будет арифметическим или логическим. Соответственно, естественным образом и определяется порядок бит в целом - N-й бит равен (1< Порядок же размещение же int и unsigned int в памяти стандартом не определяется. Реализация размещает его в памяти так, как удобно процессору. Есть big-endian и little-endian 16- и 32-битные процессоры, соответсвенно, есть и различные реализации. Некоторые процессора (например, ARM) можно установкой флага в управляющем регистре переключить в соответствующий режим - будут по-разному работать команды записи/чтения целых в памяти. Забавно, но были и смешанные реализации - что-то вроде порядка 2301. Что касается 8-битников - то для них часто нет выделенного предпочтительного порядка размещения байт целого в памяти.
E-mail:
info@telesys.ru
Ответы