Целые числа в компьютере
Вся информация, обрабатываемая современными компьютерами, хранится в них в
двоичном виде. Каждый элемент ячейки служит для
изображения одного разряда двоичного числа. Именно поэтому каждый элемент ячейки
называют разрядом.
Способы представления:
При знаковом представлении чисел 0 в самом левом разряде ячейки соответствует знаку плюс, а единица – знаку минус. Такое представление чисел называется прямым кодом.
Однако для представления отрицательных чисел в компьютере используется дополнительный код.
Если мы хотим прибавить к какому-либо числу единицу, то сдвигаемся по этой оси вправо.
Если мы хотим отнять от какого-либо числа единицу, то сдвигаемся влево.
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_3.png)
В k-разрядной компьютерной арифметике все целые числа расположены по кольцу, причем рядом с максимальным расположено минимальное в конкретном представлении.
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_4.png)
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_5.png)
В связи с тем, что количество чисел, которые могут быть представлены в k разрядах, ограничено, при выполнении арифметических действий в целочисленной k-разрядной арифметике могут возникнуть следующие ситуации:
Способы представления:
- Беззнаковое используют только для неотрицательных целых чисел
- Знаковое используют для отрицательных и положительных чисел
Беззнаковое представление целых положительных чисел в компьютере
Чтобы получить представление целого положительного числа в компьютере, это число необходимо перевести в двоичную систему счисления. Если двоичное число состоит не более чем из k цифр, то это число можно записать в k-разрядной ячейке памяти, дополнив нулями слева до k разрядов.Знаковое представление целых чисел в компьютере
При знаковом представлении чисел 0 в самом левом разряде ячейки соответствует знаку плюс, а единица – знаку минус. Такое представление чисел называется прямым кодом.
Однако для представления отрицательных чисел в компьютере используется дополнительный код.
- количество представимых чисел в k разрядах ограничено и зависит от k;
- диапазон знаковых чисел, представимых в k-разрядной ячейке, не симметричен относительно 0.
Алгоритм построения дополнительного кода
Для k-разрядной ячейки дополнительный код отрицательного числа можно получить следующим образом:- Модуль числа представляется прямым кодом в k разрядах.
- В прямом коде все нули заменяются на единицы, а единицы – на нули. Таким образом получаем обратный код.
- К полученному обратному коду прибавляется единица.
Иногда требуется по имеющемуся дополнительному коду числа восстановить
исходное число. Модуль искомого числа в таком случае можно получить двумя
способами:
- Провести обратную цепочку преобразований: вычесть единицу из дополнительного кода числа, инвертировать полученный результат и перевести его в десятичную систему счисления.
- Построить дополнительный код для имеющегося дополнительного кода и перевести результат в десятичную систему счисления.
Перечисление целых знаковых чисел
Расположим целые знаковые числа, которые можно записать в 8-разрядах, в порядке возрастания на числовой оси:/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_1.png)
Если мы хотим прибавить к какому-либо числу единицу, то сдвигаемся по этой оси вправо.
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_2.png)
Если мы хотим отнять от какого-либо числа единицу, то сдвигаемся влево.
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_3.png)
В k-разрядной компьютерной арифметике все целые числа расположены по кольцу, причем рядом с максимальным расположено минимальное в конкретном представлении.
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_4.png)
/%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D1%8B/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,%2010%20%D0%BA%D0%BB/E4HOME_INFORM_10/data/res/DL_RES_F9FEA629-0744-4FEA-B19F-3B20485D3005/Images/2.9.7_5.png)
В связи с тем, что количество чисел, которые могут быть представлены в k разрядах, ограничено, при выполнении арифметических действий в целочисленной k-разрядной арифметике могут возникнуть следующие ситуации:
- Старшие цифры результата могут выйти за пределы отведенных разрядов и будут утеряны.
- При сложении или умножении двух положительных знаковых чисел можно получить отрицательное число.
Комментариев нет:
Отправить комментарий