Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
26.04.2015
Размер:
571.9 Кб
Скачать

Глава 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