Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, программирование, полезный материал и многое другое.
Как в памяти компьютера представляются целые положительные и отрицательные числа?
Ответ
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда.
Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде.
Для представления беззнакового целого числа его следует перевести в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Основные темы параграфа:
— представление целых чисел;
— размер ячейки и диапазон значений чисел;
— особенности работы компьютера с целыми числами;
— представление вещественных чисел;
— особенности работы компьютера с вещественными числами.
Содержание урока
Представление целых чисел
Любая информация в памяти компьютера представляется в двоичном виде: последовательностью нулей и единиц. Исторически первым типом данных, с которыми стали работать компьютеры, были числа. Теперь это и числа, и тексты, и изображение, и звук. Работа с данными любого типа в конечном итоге сводится к обработке двоичных чисел — чисел, записываемых с помощью двух цифр, — 0 и 1.
Поэтому современные компьютерные технологии называют цифровыми технологиями.
В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы их представления в памяти компьютера.
Представление целых чисел
Часть памяти, в которой хранится одно число, будем называть ячейкой. Минимальный размер ячейки, в которой может храниться целое число, — 8 битов, или 1 байт. Получим представление десятичного числа 25 в такой ячейке. Для этого нужно перевести число в двоичную систему счисления. Как это делается, вы уже знаете.
Теперь осталось «вписать» его в восьмиразрядную ячейку (записать так называемое внутреннее представление числа). Делается это так:
Число записывается «прижатым» к правому краю ячейки (в младших разрядах). Оставшиеся слева разряды (старшие) заполняются нулями.
Самый старший разряд — первый слева — хранит знак числа. Если число положительное, то в этом разряде ноль, если отрицательное — единица. Самому большому положительному целому числу соответствует следующий код:
Чему он равен в десятичной системе? Можно расписать это число в развернутой форме и вычислить выражение. Но можно решить задачу быстрее. Если к младшему разряду этого числа прибавить единицу, то получится число 10000000. В десятичной системе оно равно 2 7 = 128. Значит:
011111112 = 128 — 1 = 127.
Максимальное целое положительное число, помещающееся в 8-разрядную ячейку, равно 127.
Теперь рассмотрим представление целых отрицательных чисел. Как, например, в 8-разрядной ячейке памяти будет представлено число -25?
Казалось бы, очевидным ответом является следующий: нужно в представлении числа 25 заменить старший разряд с 0 на 1. Но в компьютере все несколько сложнее.
Для представления отрицательных целых чисел используется дополнительный код.
Получить дополнительный код некоторого отрицательного числа -X можно по следующему алгоритму:
1) записать внутреннее представление соответствующего ему положительного числа +Х — это мы уже умеем;
2) записать обратный код полученного числа заменой во всех разрядах 0 на 1 и 1 на 0;
3) к полученному числу прибавить 1.
Определим по этим правилам внутреннее представление числа -2510 в восьмиразрядной ячейке:
1) 00011001
2) 11100110
3) +1
11100111 — это и есть представление числа -25.
В результате выполнении такого алгоритма единица в старшем разряде получается автоматически. Она и является признаком отрицательного значения.
Проверим полученный результат. Очевидно, что при сложении чисел +25 и -25 должен получиться ноль.
0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | |
+ | ||||||||
1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Единица в старшем разряде, получаемая при сложении, выходит за границу ячейки и исчезает. В ячейке остается нолъ.
Из этого примера теперь можно понять, почему представление отрицательного числа называется дополнительным кодом.
Представление восьмиразрядного отрицательного числа -X дополняет представление соответствующего положительного числа +Х до значения 2 8 .
Следующая страница Размер ячейки и диапазон значений чисел
Доброго времени суток уважаемый пользователь. На этой страничке мы поговорим на такие темы, как: Вещественные числа, Вещественные числа в памяти компьютера.
Предположим, в компьютер встроили устройство, которое переводит числа из десятичной системы счисления в двоичную и обратно. Достаточно ли этого для представления чисел в памяти ЭВМ? Оказывается, нет. Мало научиться записывать числа, важно облегчить процесс автоматизированного выполнения арифметических действий над ними.
Вернемся к первым ЭВМ. Основным видом их «деятельности» были вычисления, но объём оперативной памяти и быстродействие процессора были невелики и инженерам приходилось придумывать разнообразные способы хранения и обработки чисел, чтобы даже сложные расчёты выполнялись за разумное время.
Вещественные числа в памяти компьютера.
Операции над целыми числами выполнять проще, но на практике измерения в целых числах встречаются не так уж часто. Поэтому для целых чисел решено было отводить один или два байта. Один байт чаще всего отводился для всевозможных счётчиков, то есть для представления целых положительных чисел.
Максимальным десятичным числом, которое можно было закодировать таким образом, было 255 в десятичной = 11111111 в двоичной = 2^8 — 1.
Для представления положительных и отрицательных целых чисел отводилось два байта (16 битов). В качестве признака, передающего знак числа, было выбрано значение старшего бита: 0 означал, что закодировано положительное число, 1 — отрицательное.
Максимальным десятичным числом, которое можно было закодировать таким образом, было 32767 в десятичной = 01111111 11111111 в двоичной =2^15. Целые без знака — это множество положительных чисел в диапазоне [0, 2к-1], где к — это разрядность ячейки памяти, выделяемой под число. Например, если под целое число выделяется ячейка памяти размером в 16 разрядов (2 байта), то самое большое число будет таким: 0111111111111111. Например, десятичное число 255 после перевода в двоичную систему счисления и вписывания в 16-разрядную ячейку памяти будет иметь следующее внутреннее представление: 0000000011111111.
Отрицательные целые числа представляются в дополнительном коде. Дополнительный код положительного числа N — это такое его двоичное представление, которое при сложении с кодом числа N дает значение 2^к. Здесь к — количество разрядов в ячейке памяти. Например, дополнительный код числа 255 будет следующим: 1111111100000001.
Это и есть представление отрицательного числа -255. Сложим коды чисел 255 и —255:
Вычитание.
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Единичка в старшем разряде «выпала» из ячейки, поэтому сумма получилась равной нулю. Но так и должно быть: N + (— N) = 0. Процессор компьютера операцию вычитания выполняет как сложение с дополнительным кодом вычитаемого числа. При этом переполнение ячейки (выход за предельные значения) не вызывает прерывания выполнения программы. Это обстоятельство программист обязан знать и учитывать!
С вещественными числами дело обстояло немного сложнее, поскольку надо было придумать способ, одинаковый для кодирования и больших, и маленьких чисел, то есть и миллион (1 000 000), и одну миллионную (0,000 001) хотелось бы кодировать посредством одного и того же алгоритма.
В соответствии с принципом позиционности любое десятичное число можно представить в виде произведения двух чисел, одно из которых меньше единицы, а другое представляет собой некоторую степень десяти.
Такое представление чисел называется записью с плавающей точкой (запись 123,45 — запись с фиксированной точкой). В этой записи число имеет четыре характеристики:
- Знак числа.
- Знак порядка.
- Порядок (степень числа 10).
- Мантисса (дробная часть числа).
При двоичном кодировании необходимо было все эти характеристики как-то отразить.
Максимальный порядок числа был равен 111111в двоичной = 63 в десятичной,следовательно, максимальным числом, которое можно было закодировать таким образом, было 10^63.
Формат представления вещественных чисел в компьютере называется форматом с плавающей точкой. Вещественное число R представляется в виде произведения мантиссы т на основание системы счисления п в некоторой целой степени р, которую называют порядком: R = т х п^р.
Чтобы не было неоднозначности, договорились в ЭВМ использовать нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0,1п