Глава 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 Зяу ЧПй