Интернет магазин китайских планшетных компьютеров



Компьютеры - Битовое поле - Операции над знаковыми полями в дополнительном коде

23 января 2011


Оглавление:
1. Битовое поле
2. Операции над многобитовыми полями
3. Операции над однобитовыми полями
4. Операции над знаковыми полями в дополнительном коде
5. Объявления битовых полей



Существуют два способа хранения отрицательных целых чисел — знаковый бит и дополнительный код. В подавляющем большинстве современных машин применяется второй. При записи отрицательных чисел дополнительным кодом имеем:

-1 = 11111111b
-2 = 11111110b
-3 = 11111101b
-4 = 11111100b
и т. д.

Считаем, что поля c и d имеют именно такой формат. Тогда поле c может хранить числа от −2=102 до 1=012, а поле d — от −8=10002 до 7=01112.

Сборка и замена чисел

Каждое из слагаемых, чтобы оно не испортило более старшие разряды, требуется умножать на битовую маску соответствующей длины. В частности:

x = + << 2) + + a

Извлечение чисел

Для извлечения чисел требуется сдвинуть поле на нужное количество битов вправо, заодно размножив знаковый бит. Например, для этого можно воспользоваться арифметическим сдвигом. Если x имеет длину 8 битов, то

c = >>a 6
d = x >>a 4

Внимание! В языке программирования Java всё наоборот: знаком >> обозначается арифметический сдвиг, знаком >>> — простой.

Если арифметического сдвига нет, то…

c1 = x >> 2
если
  то c = c1 | 0x11111100b
  иначе c = c1 & 0x00000011b


Просмотров: 4077


<<< Битовая маска
Битовые операции >>>