Глава 6. Базовые типы данных и операции _________________729

зуют этот бит как дополнительней значащий. Чтобы определить беззнаковую целую переменную, добавьте к ее определению ключевое слово unsigned. Например, определение беззнакового целого k с начальным значением 13 выглядит так:

unsigned int k = 13;

Замечание

В действительности знаковые целые числа — char, int и long — хранятся в так называемом дополнительном коде. Вещественные числа представляются в формате, соответствующем стандарту IEEE, имеющем с дополнительным кодом мало общего.

Положительные целые числа в дополнительном коде выглядят точно так же, как и в прямом. Например, знаковое целое +1 задается так:

signed int k = 1;

и во внутреннем представлении оно хранится как 32-разрядное число следующего вида:

1 = 0х00000000000000000000000000000001 // 32 бита

Чтобы получить отрицательное число в дополнительном коде, надо взять его с обратным знаком, инвертировать все биты и прибавить к полученному числу 1, то есть число -1 будет выглядеть следующим образом:

-1 = 0х11111111111111111111111111111110 + 1 = ^Oxilllllllllllllllllllllllllllllll // 32 бита

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

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

Битовые поля

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

Совет

Шестнадцатеричные числа (т. е. с основанием системы счисления 16) записываются с приставкой Ох, чтобы отличаться от десятичных. Шестнадца-теричное число

0х400 // Читается "четьре-ноль-ноль"

равно десятичному 1024.

5 Зяу ЧПй