В этой главе разъясняются свойства компьютеров. Она расскажет вам как компьютеры работают и почему они делают это именно так. Некоторые положения могут оказаться знакомыми вам. Если у вас нет опыта программирования на языке ассемблера, то многие операции будут для вас новыми.
Все компьютеры используют для хранения информации двоичную систему. Это значит, что каждый элемент хранимой информации может иметь только два состояния. Эти состояния обозначаются как "включен" и "выключен", "истина" и "ложь", или "1" и "0". Компьютер хранит эти значения в виде уровней напряжения. К счастью у нас нет нужды связываться с напряжением. При написании программ мы имеем дело только с числами. Используя простейшие числа 0 и 1, можно выполнять очень сложные вычисления. Из-за двоичного представления данных компьютеры используют в своих вычислениях арифметику с двоичным основанием.
Арифметика с основанием 2 пользуется только двумя цифрами: 0 и 1. Мы обычно применяем систему исчисления по основанию 10. В десятичной арифметике употребляется десять различных цифр - от 0 до 9. Двоичную арифметику можно представить себе как систему для людей, имеющих только два пальца. Ограничение лишь десятью цифрами в десятичной арифметике не мешает нам представлять более крупные числа. Мы пользуемся многозначными числами, в каждой позиции которых стоят разные степени 10. Самая правая цифра любого числа обозначает число едениц, соседняя слева - количество десятков, следующая - число сотен и т.д. Прогрессия справа налево выстраивается такая:
10**0, 10**1, 10**2 и т.д. Число 2368 в дейстительности представляет 2 тысячи, 3 сотни, 6 десятков и 8 едениц. Фиг. 2.1 показывает ,говоря матическим языком, разложение числа 2368.
Арифметика с основанием 2 или двоичная система аналогична десятичной, за исключением того, что разряды числа здесь соответствуют степеням 2 а не 10. Числа больше 1 представляются многозначными числами, так же как в десятичной арифметике многозначное представление получают числа больше 9. Каждая цифра в двоичной системе называется бит от Binary digIT (двоичная показывает значение двоичного числа 101101B.
Мы будем пользоваться суффиксом "B" для обозначения чисел в двоичном представлении. Этим они будут отличаться от десятичных, не имеющих суффикса. Например, 2368 - это десятичное число, а 101101B - двоичное. В математической литературе для обозначения системы исчисления обычно используется индекс. Мы будем пользоваться символом "B", поскольку ассемблер IBM для обозначения двоичных чисел применяет именно его.
В таблице Фиг. 2.3 для представления максимального десятичного числа требуется 4 бита. Для более крупных чисел потребуется еще больше бит. Двоичным числом состоящим из n бит можно изобразить число величиной 2**n-1.
| Десятичное | Двоичное |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| 10 | 1010 |
Фиг. 2.3. Первые 10 целых
То есть двоичное число в n бит длиной может единственным образом представить любое целое от 0 до 2**n-1. Для 4-х битового примера на Фиг 2.3 самое большое такое число равно 15 (2**4-1).
Для каждого конкретного микропроцессора сществует максмальный размер двоичных чисел, которые могут быть в нем представлены. Для микропроцессора 8088, используемого в IBM PC, внутренние операции производятся над числами длиной 16 бит. Максимальное целое, которое можно представить в 16 битах, равно 2**16-1 или 65 535. Однако такая беззнаковая арифметика допускает числа только от 0 до 65 535.
Для обозначения отрицательных чисел нам потребуются изменения в этой схеме.