Символы могут быть управляющими. В кодировке 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