Символы могут быть управляющими. В кодировке ASCII
Управляющие: 0...31,127
Видимые 32,...,126
Ctrl+I -> 9 -> 09h
@ -> 64 -> 40h
4 -> 52-> 34h
Коды от 128 до 255 выделены для национальных символов и алфавитов и символов псевдографики. Для кириллицы используется кодовая страница cp-866 (А ->128->80h; a ->160->A0h). Стандартная для Windows: ANSI. Для кириллицы cp-1251. Unix и Mac: KOI-8.
Unicode (2х байтовая кодировка)
ЦЕЛЫЕ ЧИСЛА
Целые числа без знака это положительные числа или 0. Они могут занимать 8, 16, 32 разряда. Нулевой бит является младшим и является краним правым. биты 7, 15, и 31старшие и находятся в левом краю. Для целых чисел без знака все биты являются информационными.
Формат представления 32х разрядного целого числа без знака
ИНФОРМАЦИОННОЕ ПОЛЕ | ||||||||
............... | ||||||||
старший разряд | младший разряд |
Сколько требуется и каково машинное (внутреннее представление) числа 40000
40000d-> 1001 1100 0100 0000b -> 9C40
для хранения этого числа требуется минимум 16 разрядов (unsigned int)
Д\З какой диапазон допустимых значений может иметь целое число без знака длиной 64 разряда
Целые числа со знаком могут быть положительными, отрицательными и нулем. По диапазону допустимых положительных значений они в 2 раза меньше без знаковых.
unsigned int 65535
int -32768...32767
Это происходит по тому, что не все биты отводятся под информацию. Старший бит отводится под знак.
если знаковый бит = 0 число положительное иначе отрицательное.
ФОРМАТ ПРЕДСТАВЛЕНИЯ 32х РАЗРЯДНОГО ЧИСЛА СО ЗНАКОМ
S | Информ | ационно | е | поле | |||||
............. | |||||||||
знак числа | информ | ационн | ые разр | яды |
Пример
Сколько требуется и каково машинное (внутреннее представление) положительного числа 127
127d-> 0111 1111b-> 7Fh
В IBM совместимых компьютерах за основу представления отрицательных чисел принято представление в дополнительном коде.
Алгоритм представления отрицательного числа в дополнительном коде следующий:
1. dec-> bin
2. инверсия bin кода
3. инвертированный код +1
Пример
-1607dec ->1607dec-> 0110 0100 0111b->647h
0000 0110 0100 0111b-> 1111 1001 1011 1000b -> 1111 1001 1011 1001b-> F9B9h
В памяти компьютера это число будет хранится задом на перед -> B9F9h
MASM генерирует листинг задом на перед, а компилятор TASM в прямом порядке.
Вывод: для разных чисел двоичный код может быть один и тот же. Только программист знает, что представляет этот двоичный код.
Д\З Что будет если попытаться втиснуть в 4х битовую ячейку памяти числа 20 и -12.
ВЕЩЕСТВЕННЫЕ ЧИСЛА (float, double, long double) числа с плавающей точкой.
Эти числа обрабатываются сопроцессором.
Представление вещественных чисел в 2ом нормализованном виде.
Нормализовать - представить число таким образом, что бы оно начиналось с 1.
Общая формула:
1.m*2^p
m- мантисса
p - порядок
1) -+1.0d-> -+1.0*2^0b
2) -+0.5d-> -+0.1b-> -+1.0*2^-1b
3) -+0.703125d -> -+ 0101 101b -> -+1.01101*2^-1b
4) -+117.25d-> -+1110101.01b-> 1.11010101*2^6b
S | характеристика | Нормализовання мантиса | |||||||
... | ... | ... | ... | ... | |||||
БИТЫ | БИТЫ | БИТЫ | БИТЫ | БИТЫ | БИТЫ | БИТЫ | БИТЫ | БИТЫ | БИТЫ |
Характеристика = смещение + порядок
Смещение - число равное половине максимально возможного которое может поместится в поле характеристик.
F7-+порядок
Поскольку мантисса всегда нормализована нет смысла хранить явно точку.
между 23 и 22 битом находится скрытый разряд для хранения нормализующей единицы.
1.0d-> 1.0*2^0b
x=7F+0=7F
... |
3F80 0000