- •Оглавление
- •Представление чисел в памяти эвм
- •Представление беззнаковых целых чисел в памяти эвм
- •Обратный код
- •Пример 1.
- •Пример 2.
- •Пример 3.
- •Пример 4.
- •Пример 5.
- •Пример 2.
- •Пример 3.
- •Пример 4.
- •Пример 5.
- •Важное следствие (пример 2).
- •Представление вещественных типов в памяти эвм
- •Пример 1
- •Пример 2
- •Пример 2
- •Пример 3
- •Пример 4
- •Алгоритмы работы с числами, которые представлены строкой
- •Сложение положительных чисел, представленных в виде строки
- •Реализация алгоритма на Pascal
- •Умножение положительного числа, представленного в виде строки, на одноразрядный коэффициент
- •Реализация алгоритма на Pascal
- •Умножение двух положительных целых чисел, представленных в виде строки
- •Реализация алгоритма на Pascal
- •Сравнение двух целых чисел, представленных в виде строки
- •Реализация алгоритма на Pascal
- •Вычитание целых чисел, представленных в виде строки
- •Реализация алгоритма на Pascal
- •Реализация алгоритмов работы с целыми числами, представленными в виде строки на c#
Пример 2
Путь у нас есть нормированное число: -1,56*102 , которое надо представить в 16 ячейках, одна из которых отведена под знак, 10 ячеек отведены под мантиссу, 5 ячеек отведены под порядок.
В общем виде результат представления равен
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
В первом разряде храниться «1», потому что число отрицательное. Поэтому следующий шаг к ответу будет
1 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
Теперь нам надо записать мантиссу в 10 разрядов. Поэтому дополним число 1,56 незначащими нулями до 10 разрядов: 1,560000000.
Так как у нас есть ограничение 1, то мы можем «отбросить» первую единицу. Т.к. мы отбросили «1» в начале, то допишем еще один незначащий ноль в конце и запишем в соответствующие разряды.
1 |
X |
X |
X |
X |
X |
5 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Теперь нам надо записать порядок (P=2) в 5 разрядов. Прибавим к порядку смещение, получим 09999 + 2 = 10001.
1 |
1 |
0 |
0 |
0 |
1 |
5 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Мы получили число, которое храниться по принципам, аналогичным принципам хранения чисел с плавающей запятой.
Переход в двоичную систему
Что измениться при переходе в двоичную систему?
Ограничение 1 будет выполняться автоматически
Основание системы счисления будет равно 2.
А все остальные принципы остаются такими же.
Пример 1.
Представить число 3.25 в 16 битах в форме с плавающей запятой, один из которых отведен под знак, 10 отведены под мантиссу, 5 отведены под порядок.
Решение.
Переведем 3.25 в двоичную систему. Получим 11.01.
Пронормируем это число. Получим 1,101*21.
В общем виде результат представления равен
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
Т.к. число положительное, то в первом бите будет храниться 0. Поэтому следующий шаг к ответу будет
0 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
Теперь нам надо записать мантиссу в 10 разрядов. Поэтому дополним число 1,101 незначащими нулями до 10 разрядов: 1,101000000.
мы можем «отбросить» первую единицу, потому что она у нас всегда там есть. Т.к. мы отбросили «1» в начале, то допишем еще один незначащий ноль в конце и запишем в соответствующие разряды.
0 |
X |
X |
X |
X |
X |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Теперь нам надо записать порядок в 5 разрядов. В качестве смещения выберем 011112. Поэтому в 5 разрядов надо записать (011112+12=100002).
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Для удобства запишем в 16ричной системе:501116