Глава 2
2.1
Константы
Максимально
допустимое значение константы типа
short
2.2
Манипуляции с битами
Для
того чтобы обнулить крайний справа
единичный бит (например,
01010000),
используется формула:
x&(x-1)
Эту
формулу можно применять для проверки
того, является ли беззнаковое целое
степенью
2 (путем проверки результата вычислений
на равенство 0).
Чтобы
выделить в слове крайний справа единичный
бит (например,00001000 из 01011000, если такого
бита нет, возвращает 0), используется
формула
x&(-x)
Чтобы
выделить в слове крайний справа нулевой
бит (например, 00001000 из 01001111,
если
такого бита нет, возвращает 0), используется
формула
~x&(x+1)
Почему
нет примеров с левыми битами
Функция,
отображающая слова в слова, может быть
реализована по-
средством
операций побитового сложения, вычитания,
и, или, отрицания тогда
и
только тогда, когда каждый бит результата
зависит от битов исход-
ных
операндов в той же позиции и правее нее.
Ниже
приводится набор тождеств для операций
сложения и
вычитания
в комбинации с логическими операциями:
-x=~x+1
-x=~(x-1)
x-y=x+~y+1
x|y=(x&~y)+y
x&y=(~x|y)-~x
Абсолютное
значение x
y=x>>31;
absx=(x^y)-y;
или absx=(x+y)^y;
Пример
распространения влево бита в седьмой
позиции.
((x+
0x00000080) & 0x000000FF) 0x00000080
Если
на машине нет команды знакового сдвига
вправо (shift right signed) ее
можно
заменить
другими командами.
t=-(x>>31);
((x^t)>>n)^t;
Трехзначная
функция сравнения
(x>y)-(x<y)
2.3
Преобразования стандартных типов
После
вычисления:
intk=(32.23/100)*100;
в
переменной kзначение
32.22