Представление целых чисел
Представление данных
Основные типы данных с точки зрения размерности
С точки зрения размерности микропроцессор аппаратно поддерживает следующие основные типы данных:
- байт;
- слово;
- двойное слово;
- учетверенное слово.
Байт — восемь последовательно расположенных битов.
Биты нумеруются от 0 до 7, при этом бит 0 является самым младшим значащим битом.
Обратим внимание, байт – наименьшая адресуемая ячейка памяти.
Байт
7 6 5 4 3 2 1 0
Рис. 1. Основные типы данных: байт
Слово — два последовательно расположенных байта, 16 бит.
Биты нумеруются от 0 до 15.
Байт, содержащий нулевой бит, называется младшим байтом, а второй байт ¾ старшим байтом.
Напомним, что в микропроцессорах Intel младший байт всегда хранится по меньшему адресу. Поэтому адресом слова считается адрес его младшего байта.
Слово
Старший байт | Младший байт |
15 7 0
Рис. 2. Основные типы данных: слово
Двойное слово — два последовательно расположенных слова (четыре байта), 32 бита.
Биты нумеруются от 0 до 31. Слово, содержащее нулевой бит, называется младшим словом, второе слово называется старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова.
Двойное слово
Старшее слово | Младшее слово |
31 15 0
Рис. 3. Основные типы данных: двойное слово
Учетверенное слово — четыре последовательно расположенных слова (восемь байт), 64 бита.
Биты нумеруются от 0 до 63. Двойное слово, содержащее нулевой бит, называется младшим двойным словом, а второе двойное слово — старшим двойным словом. Младшее двойное слово хранится по меньшему адресу. Адресом учетверенного слова считается адрес его младшего двойного слова.
Учетверенное слово
Старшее двойное слово | Младшее двойное слово |
63 31 0
Рис. 4. Основные типы данных: учетверенное слово
Обычно на практике программными средствами обрабатываются данные, представленные целыми и вещественными числами, а также символами.
Из этих простых типов данных строятся так называемые структурированные типы: массивы, множества, строки символов, записи (структуры) и другие.
Поэтому важно понимать, прежде всего, как именно с точки зрения микропроцессора представляются и обрабатываются простые типы данных.
Для представления числа в памяти отводится необходимое количество байт.
Известно, что в ячейке из k разрядов можно записать 2k различных комбинаций из 0 и 1.
Для хранения (записи) беззнакового числа используются все биты отведенных для его представления ячеек.
Следовательно, с помощью 8 разрядов одного байта можно представить 28 = 256 целых беззнаковых чисел, то есть числа в диапазоне от 0 до 255.
С помощью 16 разрядов слова можно представить 216 = 65536 целых беззнаковых чисел, то есть числа в диапазоне от 0 до 65535.
Четырьмя байтами двойного слова (32 бита) можно представить числа в диапазоне от 0 до 232 . А учетверенное слово позволяет представить 264 различных целых беззнаковых чисел.
Диапазон представления знаковых чисел отличается от диапазона представления беззнаковых чисел, потому что один бит используется для обозначения знака числа. Для этого в так называемый знаковый разряд числа записывается 0 для положительного числа и 1 для отрицательного числа. Такое представление знаковых чисел называется прямым кодом.
Поэтому, с помощью одного байта могут быть представлены только 27 = 128 отрицательных чисел и 128 положительных чисел. То есть с помощью 8 разрядов одного байта могут быть записаны числа в диапазоне от –128 до +127 (включая 0).
Два байта слова при одном отведенном бите на знак числа, соответственно, позволяют представить 215 = 32768 отрицательных чисел и 32768 положительных чисел, то есть числа в диапазоне от –32 768 до +32 767 (включая 0).
Для представления в памяти компьютера отрицательных чисел используются специальные коды:
- обратный код;
- дополнительный код.
Специальные коды для представления отрицательных чисел необходимы в силу того, что алгоритм вычитания чисел является достаточно сложным для выполнения с помощью устройств компьютера, и потому операция вычитания заменяется операцией сложения, но для этого отрицательные числа должны быть представлены особым образом.
При записи отрицательного числа в обратном коде в знаковый разряд записывается 1, все остальные разряды числа инвертируются (то есть вместо единиц записываются нули, вместо нулей – единицы). Например, отрицательное двоичное число 1110010 в обратном коде будет иметь вид 10001101.
При записи отрицательного числа в дополнительном коде в знаковый разряд также помещается 1, все разряды инвертируются, а затем к младшему разряду прибавляется 1. Например, двоичное число из предыдущего примера 1110010 в дополнительном коде будет иметь вид 10001110, так как
+
---------------
Таким образом, использование дополнительного или обратного кода позволяет операцию вычитания свести к операции сложения: X – Y = X + (-Y).