Числа в памяти компьютера: Форматы представления чисел в компьютере — урок. Информатика, 10 класс.

Содержание

Представление чисел в памяти компьютера

-32768

Выход результатов вычислений за границы допустимого диапазона называется переполнением. Переполнение при вычислениях с фиксированной точкой не вызывает прерывания работы процессора. Машина продолжает считать, но результаты могут оказаться неправильными.

Вещественные числа. Числовые величины, которые могут принимать любые значения (целые и дробные) называются вещественными числами. В математике также используется термин «действительные числа». Решение большинства математических задач сводится к вычислениям с веществен-ными числами. Как же такие числа представляются в памяти компьютера?

Вещественные числа в памяти компьютера представляются в форме с плавающей точкой.

Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком:

R = m * рn

Например, число 25,324 можно записать в таком виде: 0. 25324х102. Здесь m=0.25324 — мантисса, n=2 — порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка».

Однако справедливы и следующие равенства:

25,324 = 2,5324*101 = 0,0025324*104 = 2532,4*102 и т.п.

Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализован-ном представлении должна удовлетворять условию:

0,1pp.

Иначе говоря, мантисса меньше единицы и первая значащая цифра — не ноль. Значит для рассмотренного числа нормализованным представлением будет: 0.25324 * 102. В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой.

Для примера рассмотрим один из возможных. Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (р=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:

± машинный порядок&nbsp &nbsp &nbsp &nbsp М А Н Т И С С А&nbsp &nbsp &nbsp
&nbsp&nbsp&nbsp&nbsp&nbsp1-й байт &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 2-й байт&nbsp&nbsp&nbsp 3-й байт &nbsp 4-й байт&nbsp&nbsp

В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.

Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие:

Машинный порядок 01 2 3 64 65125126 127
Математический порядок -64 -63 -62 -61 0161 62 63

Если обозначить машинный порядок Мр, а математический — р, то связь между ними ыразится такой формулой:

Мр = р + 64.

Итак, машинный порядок смещен относительно математического на 64 единицы и имеет только положительные значения. При выполнении вычислений с плавающей точкой процессор это смещение учитывает.

Полученная формула записана в десятичной системе. Поскольку 6410=4016 (проверьте!), то в шестнадцатеричной системе формула примет вид:

Мр16 = р16 + 4016

И, наконец, в двоичной системе:

Мр2 = р2+100 00002
    Теперь мы можем записать внутреннее представление числа 25,324 в форме с плавающей точкой.
  1. Переведем его в двоичную систему счисления с 24 значащими цифрами. 25,32410= 11001,01010010111100011012
  2. Запишем в форме нормализованного двоичного числа с плавающей точкой: 0,110010101001011110001101*10101 Здесь мантисса, основание системы счисления (210=102) и порядок (510=1012)записаны в двоичной системе.
  3. Вычислим машинный порядок. Мр2
    = 101 + 100 0000 = 100 0101
  4. Запишем представление числа в ячейке памяти.
    01000101110010101001011110001101

Это и есть искомый результат. Его можно переписать в более компактной шестнадцатеричной форме:

Для того, чтобы получить внутреннее представление отрицательного числа -25,324,достаточно в полученном выше коде заменить в разряде знака числа 0 на 1.

Получим:

11000101110010101001011110001101

А в шестнадцатеричной форме:

Никакого инвертирования, как для отрицательных чисел с фиксированной точкой, здесь не происходит.

Рассмотрим, наконец, вопрос о диапазоне чисел, представимых в форме с плавающей точкой. Очевидно, положительные и отрицательные числа расположены симметрично относительно нуля.

Следовательно, максимальное и минимальное числа равны между собой по модулю: Rmax = |Rmin|. Наименьшее по абсолютной величине число равно нулю. Чему же равно Rmax? Это число с самой большой мантиссой и самым большим порядком:

0,111111111111111111111111*1021111111

Если перевести в десятичную систему, то получится

Rmax = (1 — 2-24) * 264 = 1019

Очевидно, что диапазон вещественных чисел значительно шире диапазона целых чисел. Если в результате вычислений получается число по модулю большее, чем Rmax, то происходит прерывание работы процессора. Такая ситуация называется переполнением при вычислениях с плавающей точкой. Наименьшее по модулю ненулевое значение равно:

(1/2) * 2-64=2-66.

Любые значения, меньшие данного по абсолютной величине, воспринимаются процессором как нулевые.

Как известно из математики, множество действительных чисел бесконечно и непрерывно. Множество же вещественных чисел, представимых в памяти ЭВМ в форме с плавающей точкой, является ограниченным и дискретным. Каждое следующее значение получается прибавлением к мантиссе предыдущего единицы в последнем (24-м) разряде. Количество вещественных чисел, точно представимых в па-мяти машины, вычисляется по формуле:

N = 2t * ( U — L+ 1) + 1.

Здесь t — количество двоичных разрядов мантиссы; U — максимальное значение математического порядка; L — минимальное значение порядка. Для рассмотренного нами варианта (t = 24, U = 63, L = -64) получается:

N = 2 146 683 548.

Все же остальные числа, не попадающие в это множество, но находящиеся в диапазоне допустимых значений, представляются в памяти приближенно (мантисса обрезается на 24-м разряде). А поскольку числа имеют погрешности, то и результаты вычислений с этими числами также будут содержать погрешность. Из сказанного следует вывод: вычисления с вещественными числами в компьютере выполняются приближенно.

Вопросы и задания
  1. Что такое форма с фиксированной точкой? Для представления каких чисел в компьютере она используется?
  2. Как в форме с фиксированной точкой представляются целые положительные и отрицательные числа?

Числа в памяти компьютера | Основные темы параграфа






Основные темы параграфа:

— представление целых чисел;
— размер ячейки и диапазон значений чисел;
— особенности работы компьютера с целыми числами;

— представление вещественных чисел;
— особенности работы компьютера с вещественными числами.

Содержание урока

Представление целых чисел

Размер ячейки и диапазон значений чисел

Представление вещественных чисел

Вопросы и задания

Любая информация в памяти компьютера представляется в двоичном виде: последовательностью нулей и единиц. Исторически первым типом данных, с которыми стали работать компьютеры, были числа. Теперь это и числа, и тексты, и изображение, и звук. Работа с данными любого типа в конечном итоге сводится к обработке двоичных чисел — чисел, записываемых с помощью двух цифр, — 0 и 1.

Поэтому современные компьютерные технологии называют цифровыми технологиями

.

В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы их представления в памяти компьютера.

Представление целых чисел

Часть памяти, в которой хранится одно число, будем называть ячейкой. Минимальный размер ячейки, в которой может храниться целое число, — 8 битов, или 1 байт. Получим представление десятичного числа 25 в такой ячейке. Для этого нужно перевести число в двоичную систему счисления. Как это делается, вы уже знаете.

Результат перевода:

2510 = 110012.

Теперь осталось «вписать» его в восьмиразрядную ячейку (записать так называемое внутреннее представление числа). Делается это так:

00011001.

Число записывается «прижатым» к правому краю ячейки (в младших разрядах). Оставшиеся слева разряды (старшие) заполняются нулями.

Самый старший разряд — первый слева — хранит знак числа. Если число положительное, то в этом разряде ноль, если отрицательное — единица. Самому большому положительному целому числу соответствует следующий код:

01111111

Чему он равен в десятичной системе? Можно расписать это число в развернутой форме и вычислить выражение. Но можно решить задачу быстрее. Если к младшему разряду этого числа прибавить единицу, то получится число 10000000. В десятичной системе оно равно 27 = 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.

«Числа в памяти компьютера». 9-й класс

Цели урока:

  • Образовательные:
    • повторить понятие система счисления;
    • повторить правила перевода из любой системы счисления в 10-ю и из 10-й системы счисления в любую;
    • повторить правила перевода между 2-й, 8-й и 16-й системами счисления, используя метод триад и тетрад;
    • дать представление о представлении положительных и отрицательных числах в памяти компьютера и особенностях работы с целыми числами;
    • дать представление о разрядности ячейки памяти и диапазоне значений чисел;
    • дать представление о представлении вещественных чисел в памяти компьютера и особенностях работы компьютера с вещественными числами.
  • Развивающие:
    • развивать внимание, логическое мышление, умение анализировать, сопоставлять, делать выводы.
  • Воспитательные:
    • воспитание информационной культуры учащихся;
    • прививать интерес к предмету информатика;
    • прививать  навыки самостоятельной работы;
    • воспитание активности учащихся.

Формы организации учащихся на уроке:  индивидуальная, фронтальная

Используемое оборудование: компьютеры, интерактивная доска

Программное обеспечение: презентация к уроку, проверочный тест.

ХОД УРОКА

I. Организационный момент

Приветствие, проверка письменного домашнего задания.

II. Актуализация полученных знаний

Учащиеся (несколько человек) проходят тест на компьютерах по теме: «Системы счисления». (Приложение 1)

Для остальных учащихся фронтальный опрос.

Вопросы для фронтального опроса:

– Что такое система счисления?
– Сколько цифр используются в 2-й, 8-й, 10-й, 16-й системах счисления, перечислить какие.
– Перевести число 3458 в 10-ю систему счисления.
– Перевести число 45110 в 16-ю систему счисления.
– Перевод числа 10110011012 в 8-ю и 16-ю системы счисления, используя триады и тетрады.

III. Изучение нового материала (Презентация)

Вся информация в памяти компьютера представляется в двоичном виде, т.е. с помощью нулей и единиц. Первоначально компьютеры могли работать только с числами. Теперь это числа, тексты, изображения, звук, видео. Работа с данными любого типа сводится к обработке двоичных чисел – чисел, записываемых с помощью двух цифр – 0 и 1. Отсюда и название – «Цифровые технологии».
В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы представления чисел в памяти компьютера.
Они называются:

  • форма с фиксированной точкой (применяется к целым числам)
  • форма с плавающей точкой (применяется к вещественным числам)

Представление целых чисел в форме с фиксированной запятой

Часть памяти компьютера, в которой хранится одно число – ячейка. Минимальный размер ячейки, где может храниться целое число – 8 бит или 1 байт.
Представим число 4210  в двоичной системе счисления, а затем представим как  будет выглядеть это число в памяти компьютера.
4210 = 1010102.

Запишем полученное число в восьмиразрядную ячейку. Запись в ячейку производится с конца, то есть последняя цифра числа записывается в последний разряд ячейки, потом предпоследнюю цифру в предпоследний разряд ячейки и так далее пока не закончится число. Свободные разряды слева заполняются нулями.

Самый старший разряд (первый слева) – хранит знак числа. Если число положительное, то этот разряд равен 0, если отрицательное – 1.

Таким образом, самое большее положительное число, которое можно вписать в восьмиразрядную сетку имеет вид:

И это число 11111112 = 12710
Максимальное целое положительное число, помещающееся в восьмиразрядную ячейку, равно 127.

Рассмотрим  представление в памяти компьютера целых отрицательных чисел

Для представления целых отрицательных чисел используется дополнительный код.
Дополнительный код числа можно получить, зная следующий алгоритм:

  1. Записать внутреннее представление соответствующего ему положительного числа
  2. Записать обратный код полученного числа заменой во всех разрядах 0 на 1, и 1 на 0.
  3. К полученному числу прибавить 1.

Представим внутреннее представление числа  – 4210 в восьмиразрядной ячейке:  4210 = 1010102

1)  00101010
2)  11010101   это обратный код
3)             + 1
      11010110   получили представление числа – 4210 в восьмиразрядной ячейке.

Старший разряд получил значение 1 автоматически. Единица в старшем разряде – признак отрицательного числа.
Сложим числа 42 и – 42. Должны получить 0, проверим:

+ 00101010
   11010110
   100000000     получили число, старший разряд которого выходит за пределы восьмиразрядной ячейки, таким образом восьмиразрядная ячейка заполнена нулями, т.е. полученное при сложение число равно 0.

Представление восьмиразрядного отрицательного числа – Х дополняет представление соответствующего положительного числа Х до значения 28. Поэтому представление отрицательного целого числа называется дополнительным кодом.

Диапазон представления целых чисел в восьмиразрядной ячейке:

 – 128 < X < 127   или   –27< Х < 27 – 1

Мы рассмотрели представление целых чисел на примере 8-ми разрядной ячейки, но бывают и 16-разрядные и 32-разрядные ячейки.

В 16-рядной ячейке можно получить числа диапазоном:

– 215< X < 215 – 1     или   – 32768 < X < 32767

В 32-разрядной ячейке  можно получить числа диапазоном:

– 231< X < 231 – 1      или  – 2147483648 < X < 2147483647

Общая формула для диапазона целых чисел в зависимости от разрядности N ячейки:

– 2N–1< X < 2N–1 – 1

Представление целых чисел в форме с плавающей запятой.

Вещественные числа это тоже, что и действительные числа. Из курса математике вам известно, что к действительным числам относятся целые и дробные числа.
Всякое вещественное число X записывается в виде произведения мантиссы m и основания системы счисления p в некоторой целой степени n, которую называют порядком:

X = m · pn

Например, число 25,324 = 0,25324 · 102
мантисса m = 0,25324, n = 2 – порядок. Порядок указывает, на какое количество позиций и в каком направлении должна сместится десятичная запятая в мантиссе.
Чаще всего для хранения вещественных чисел в памяти компьютера используется 32-разрядная или 64-разрядная ячейка. В первом случае это будет с обычной точностью, во-втором случае с удвоенной точностью. В ячейке хранятся два числа в двоичной системе счисления: мантисса и порядка.
Диапазон вещественных чисел ограничен, но он значительно шире, чем при представление целых чисел в форме с фиксированной запятой.
Например, при использовании 32-разрядной ячейки этот диапазон следующий:

–3,4 · 1038< X < 3,4 · 1038

Результаты машинных вычислений с вещественными числами содержат погрешность. При удвоенной точности погрешность уменьшается. Выход из диапазона (переполнение) приводит к прерыванию работы процессора.

IV. Закрепление изученного материала

Выполнить самостоятельно задания №3(а,б) и №4(а,б)  на странице учебника 105 с последующей проверкой

№3(а,б)

а) Записать внутреннее представление числа 32 в восьмиразрядную ячейку 3210 = 1000002

Значит внутреннее представление числа 32 в восьмиразрядную ячейку: 00100000

б) Записать внутреннее представление числа –32 в восьмиразрядную ячейку
32  имеет представление            00100000
Обратный код                              11011111
                                                                  +1
                                                      11100000
Значит внутреннее представление числа –32 в восьмиразрядную ячейку: 11100000

№4(а,б)

а) Определить какому десятичному числу соответствует двоичный код  00010101 восьмиразрядного представления целого числа.

Видим, что первый разряд – 0, значит число положительное. 

Переведём число 101012 в десятичную систему счисления:

1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 16 + 4 + 1 = 2110

Значит двоичный код  00010101 восьмиразрядного представления целого числа 2110.

б) Определить какому десятичному числу соответствует двоичный код  11111110 восьмиразрядного представления целого числа.

Видим, что первый разряд – 1, значит число отрицательное. Для нахождения  десятичного числа выполним алгоритм дополнительного кода в обратном порядке, а именно:

1) Вычтем из данного числа 1

11111110
           – 1
11111101

2) Заменим 1 на 0 и 0 на 1

00000010

3) Переведём двоичное число 102 в десятичную систему счисления.

102 = 1 · 21 + 0 · 20 = 2

Таким образом,  двоичный код  11111110 восьмиразрядного представления целого числа 210.

Задание: представить вещественное число

а) 0,0050589;          б)1234,0456

в нормализованной форме с плавающей точкой в десятичной системе счисления.

Ответы:

а) 0,0050589 = 0,50589 · 10–2
б) 1234,0456 = 0,12340456 · 104

V. Итог урока

– Сегодня на уроке вы узнали, каким образом хранятся числа в памяти компьютера. Как зависит диапазон значений чисел от размера ячейки, в которой хранится число.
Выставление оценок за урок (тест и задания №3, №4)

VI. Домашнее задание

 Параграф 17, вопросы 1, 2, задания №3 (в,г), №4 (в,г)/

Лекция 6.

Вещественные числа в памяти компьютера

Вещественные числа в памяти компьютера представляются в форме с плавающей точкой. Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой степени, которую называют порядком.

R = m*pn

Любое число можно записать в виде формулы (1), при этом, порядок указывает, на какое количество позиций должна переместиться точка, отсюда и название плавающая точка.

25,324=2,5324*101=0,0025324*104=253,4*10-2

Представление числа с плавающей точкой

Для того чтобы придать однозначность используется процесс нормализации.

Нормализованным называется число, где мантисса ежит в пределах от 0,1 до 1 (0,1<=m<1) иначе говоря, мантисса всегда меньше 1 и первая значащая цифра не 0.

В разных типах ЭВМ применяются различные варианты представления чисел с плавающей точкой, но это не зависит от процесса нормализации, а зависит от структуры ячейки памяти.

Обычно вещественные числа представляются в 32-разрядной ячейке памяти (4 байта).

В старшем бите первого числа хранится знак. В этом разряде 0 – обозначают «+», 1 – «-». Оставшиеся 7 бит 1-го байта содержат машинный порядок, в следующих 3-х байтах хранятся значащие цифры мантиссы.

Машинный порядок

Под машинный порядок отводится 7 разрядов. Таким образом, в машинном порядке диапазон от 0000000 до 1111111 (0 – 127). Однако знак порядка в ячейке не хранится, хотя очевидно, что порядок может как «+» та и «-».

Устанавливается соответствие между машинным порядком и математическим.

Нетрудно заметить, что машинный порядок и математический связан формулой:  Мр=р+64

При этом машинный порядок равен: Мр=р+4016

Мр = р + 10000002

Применяя формулу в 2-ой с/с говорят о смещении математического порядка на 7 разрядов.

Алгоритм представления вещественных чисел в памяти компьютера

1.      перевод в 2-ую с/с с 24 значащими цифрами;

2.     записать число в форме двоичного нормализованного числа;

3.     вычислить машинный порядок;

4.     записать представление в ячейке памяти;

5.     представить в 16-ой с/с.

25,32410

Вещественные числа. Вещественные числа в памяти компьютера.

Доброго времени суток уважаемый пользователь. На этой страничке мы поговорим на такие темы, как: Вещественные числа, Вещественные числа в памяти компьютера.

Предположим, в компьютер встроили устройство, кото­рое переводит числа из десятичной системы счисления в двоичную и обратно. Достаточно ли этого для представления чисел в памяти ЭВМ? Оказывается, нет. Мало научиться записывать числа, важно облегчить процесс автоматизированного выполнения арифметических действий над ними.

Вернемся к первым ЭВМ. Основным видом их «деятель­ности» были вычисления, но объём оперативной памяти и быстродействие процессора были невелики и инженерам приходилось придумывать разнообразные способы хранения и обработки чисел, чтобы даже сложные расчёты выполня­лись за разумное время. к. Здесь к — количество разрядов в ячейке памяти. Например, дополнительный код числа 255 будет следующим: 1111111100000001.

Это и есть представление отрицательного числа -255. Сложим коды чисел 255 и —255:

Вычитание.

0000000011111111

255

1111111100000001

-255

0000000000000000

0

1

Единичка в старшем разряде «выпала» из ячейки, поэтому сумма получилась равной нулю. Но так и должно быть: N + (— N) = 0. Процессор компьюте­ра операцию вычитания выполняет как сложение с дополнительным кодом вычитаемого числа. При этом переполнение ячейки (выход за предельные значе­ния) не вызывает прерывания выполнения программы. Это обстоятельство программист обязан знать и учитывать!

С вещественными числами дело обстояло немного слож­нее, поскольку надо было придумать способ, одинаковый для кодирования и больших, и маленьких чисел, то есть и миллион (1 000 000), и одну миллионную (0,000 001) хоте­лось бы кодировать посредством одного и того же алгорит­ма.

В соответствии с принципом позиционности любое деся­тичное число можно представить в виде произведения двух чисел, одно из которых меньше единицы, а другое представ­ляет собой некоторую степень десяти.

Такое представление чисел называется записью с плава­ющей точкой (запись 123,45 — запись с фиксированной точкой). В этой записи число имеет четыре характеристи­ки:

  • Знак числа.
  • Знак порядка. р.

    Чтобы не было неоднозначности, договорились в ЭВМ использовать нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетво­рять условию: 0,1п< т < 1я. Иначе говоря, мантисса меньше единицы и первая значащая цифра — не ноль. В некоторых случаях условие нормализации принимают следующим: 1 с индексом и < т < 10 с индексом п.

    В памяти компьютера мантисса представляет­ся как целое число, содержащее только значащие цифры (0 целых и запятая не хранятся). Следова­тельно, внутреннее представление вещественного числа сводится к представлению пары целых чисел: мантиссы и порядка.

    Было решено отводить под вещественные числа 4 байта (32 бита). Три младших байта отводилось под запись ман­тиссы, а старший байт включал в себя:

    • Один (старший) бит — знак числа: 0 — положительное,
      1 — отрицательное.
    • Один бит — знак порядка: 0-положительный, 1-отрицательный.
    • Младшие 6 битов — порядок числа.

    В разных типах компьютеров применяются различные варианты представления чисел в форме с плавающей точкой. Рассмотрим один из вариантов внутреннего представления вещественного числа в четырехбайтовой ячейке памяти.

    В ячейке должна содержаться следующая инфор­мация о числе: знак числа, порядок и значащие циф­ры мантиссы.

    Машинный порядокМантисса
    1-й байт.1-й, 2-й и 3-й байты.

    В старшем бите 1-го байта хранится знак числа: 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит пер­вого байта содержат машинный порядок. В следую­щих трех байтах хранятся значащие цифры мантис­сы (24 разряда).

    В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапазоне от 0 до 127 (в десятичной системе счисления). Всего 128 значений. Порядок, очевидно, может быть как положительным, так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка: от —64 до 63.

    Машинный порядок смещен относительно ма­тематического и имеет только положительные зна­чения. Смещение выбирается так, чтобы минимальному математическому значению порядка соответ­ствовал ноль. Связь между машинным порядком (Мр) и математическим (р) в рассматриваемом случае выражается формулой:
    Мр = р + 64. Полученная формула записана в десятичной си­стеме. В двоичной системе формула имеет вид: МР = Р +10000000.

    Для записи внутреннего представления веществен­ного числа необходимо:

    • Перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами.
    • Нормализовать двоичное число.
    • Найти машинный порядок в двоичной системе счисления.
    • Учитывая знак числа, выписать его представле­ние в четырехбайтовом машинном слове.

    Диапазон вещественных чисел значительно шире диапазона целых чисел. Положительные и отрица­тельные числа расположены симметрично относи­тельно нуля. Следовательно, максимальное и мини­мальное числа равны между собой по модулю.
    Наименьшее по абсолютной величине число рав­но нулю. Наибольшее по абсолютной величине чис­ло в форме с плавающей точкой — это число с самой большой мантиссой и самым большим порядком.

    Если при вычислениях с вещественными числами результат выходит за пределы допустимого диапа­зона, то выполнение программы прерывается. Такое происходит, например, при делении на ноль, или на очень маленькое число, близкое к нулю.

    Вещественные числа, разрядность мантиссы кото­рых превышает число разрядов, выделенных под мантиссу в ячейке памяти, представляются в компью­тере приближенно (с «обрезанной» мантиссой). Например, рациональное десятичное число 0,1 в компьютере будет представлено приближенно (ок­ругленно), поскольку в двоичной системе счисления его мантисса имеет бесконечное число цифр. След­ствием такой приближенности является погрешность машинных вычислений с вещественными числами.

    Вычисления с вещественными числами компьютер выполняет приближенно. Погрешность таких вычис­лений называют погрешностью машинных ок­руглений.

    Множество вещественных чисел, точно представимых в памяти компьютера в форме с плавающей точкой, является ограниченным и дискретным. Дискретность является следствием ограниченного числа разрядов мантиссы, о чем говорилось выше.

    В настоящее время, когда быстродействие процессоров и объём оперативной памяти достаточно велики, а обычной разрядностью компьютеров становится 32 или 64 бита, уже нет жёстких требований к использованию экономных кодов для записи чисел.

    На этом данную статью я заканчиваю, надеюсь, вы полностью разобрались с темами: Вещественные числа, Вещественные числа в памяти компьютера.

    в нормализованном представлении должна удовлетво­рять условию: 0,1п

    Хранение в памяти целых чисел

    Целые числа являются самыми простыми числовыми данными, с которыми работает компьютер. Целые числа хранятся в двух возможных видах: беззнаковом (для положительных целых чисел) и со знаком (для отрицательных чисел). Целые числа в компьютере хранятся в формате с фиксированной запятой.

    Беззнаковые целые числа

    Для беззнакового представления все разряды ячейки отводятся под представление самого числа. Поэтому, если известно, что число положительное, то выгоднее рассматривать его как беззнаковое.

    Положительные целые числа занимают в памяти компьютера $1$ или $2$ байта.

    В $1$-байтовом формате целые числа принимают значения от $0$ до $255$.

    В $2$-байтовом формате от $0$ до $65535$.

    Пример 1

    Число $30_{10}=0001 \ 1110_2$ в $1$-байтовом формате:

    Рисунок 1.

    Число $30_{10}=0001 \ 1110_2$ в 2-байтовом формате:

    Рисунок 2.

    Помощь со студенческой работой на тему


    Хранение в памяти целых чисел

    Алгоритм представления в компьютере беззнаковых целых чисел

    1. Беззнаковое целое положительное число перевести в двоичную систему счисления.

    2. Записать число в $8$ разрядах так, чтобы младший разряд числа соответствовал младшему разряду ячейки.

    3. Дополнить число, если необходимо, слева нулями до нужного числа разрядов ($8$-ми, $16$-ти, $32$-х).

    Пример 2

    Получить 8-разрядное представление числа $30$.

    1. Рисунок 3.

    2. $30_{10}=11110_2.$

    3. Дополним до $8$-ми разрядов:

    \[30_{10}=00011110_2\]

    Целые числа со знаком

    Целые числа со знаком (отрицательные) занимают в памяти компьютера $1$, $2$ или $4$ байта, при этом самый старший (знаковый) разряд содержит информацию о знаке числа.

    Если число положительное, то в знаковом разряде помещается $«0»$, если число отрицательное — $«1»$.

    Целые числа со знаком в разных форматах принимают соответствующие значения:

    • в $1$-байтовом формате — от $-128$ до $127$;

    • в $2$-байтовом формате — от $-32768$ до $32767$;

    • в $4$-байтовом формате — от $-2147483648$ до $2147483647$.

    Для хранения целых чисел со знаком отводится $1$ разряд для знака, а остальные — для цифр модуля числа.

    Например, для хранения числа в $1$-байтовом формате ($8$ бит) $1$ разряд отводится для знака числа, остальные $7$ разрядов — для модуля числа.

    Для хранения целых чисел со знаком применяется $3$ формы кода:

    Особенно широко используется обратный и дополнительный код, которые позволяют существенно облегчить элементарные операции: сложение, вычитание, умножение и деление.

    Положительные числа в прямом, обратном и дополнительном кодах изображают двоичными кодами с цифрой $0$ в знаковом разряде.

    У положительных чисел все коды одинаковы, т.е. прямой, обратный и дополнительный коды равны между собой.

    Рисунок 4.

    Отрицательные числа в прямом, обратном и дополнительном кодах изображаются по-разному.

    1. Прямой код числа — это его модуль, переведенный в двоичную систему с измененным старшим битом, в зависимости от знака.

      В знаковом разряде помещается цифра $1$, а в разрядах цифровой части числа — двоичный код модуля числа.

      Числа в компьютере хранятся целыми байтами; $1$, $2$, $4$ или $8$. От количества памяти зависит количество разрядов данного числа. В $1$ байте их $8$, в $2$ — $16$ и т.д. Поэтому представляемые числа нужно дополнять нулями до необходимого количества.

      Рисунок 5.

      Если числа будут занимать в памяти $2$ байта, то знаковым все равно будет самый старший, то есть: $-30_{10}=1001 \ 1110_2= 1000 \ 0000 \ 0001 \ 1110_2$

    2. Обратный код. Для операций с отрицательными числами обычно не используется прямой код, поэтому для облегчения алгоритмов выполнения арифметических операций был создан обратный код.

      Для получения обратного кода выполняется инвертирование всех цифр двоичного кода модуля числа: $0$ заменяется на $1$, а $1$ — на $0$. Знак разряда остается без изменений.

      Рисунок 6.

    3. Дополнительный код

      Для получения дополнительного кода числа к обратному коду добавляется единица к его младшему разряду.

      Рисунок 7.

    Алгоритм получения дополнительного кода отрицательного числа

    1. Модуль отрицательного числа представить прямым кодом.

    2. Значение всех бит инвертировать: все $0$ заменить на $1$, а $1$ на $0$ (кроме значения знакового разряда).

    3. К младшему разряду полученного обратного кода прибавить единицу.

    Пример 3

    Получим $8$-разрядный дополнительный код числа $-30$:

    $00011110 — \ число \mid -30\mid =30$ в прямом коде

    $11100001 — \ число \ -30$ в обратном коде

    $11100010 — \ число \ -30$ в дополнительном коде

    Замечание 1

    Целые отрицательные числа при вводе в компьютер преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся и принимают участие в операциях. При выводе их из компьютера происходит обратное преобразование в отрицательные десятичные числа.

    Способы представления целых чисел в памяти компьютера. Арифметика с алгебраическими числами. | by Arthur Arzumanyan

    Сдвиги

    • Логический.
    • Циклический (логический).
    • Арифметический.

    Логический сдвиг — сдвиг, при котором уходящий бит исчезает, не влияя на оставшиеся биты, а на месте появившегося бита записывается бит 0. Это означает, что логический сдвиг рассматривает нашу последовательность, как последовательность битов и не анализирует её с точки зрения знака числа.

    Логический сдвиг

    Циклический сдвиг — сдвиг, при котором уходящий бит появляется на месте появившегося свободного на другом конце числа. Этот тип сдвига относится к логическому.

    Циклический сдвиг

    Для циклических сдвигов используются сокращения:

    • ror — циклический сдвиг вправо;
    • rol — циклический сдвиг влево.

    Арифметический сдвиг — сдвиг, при котором последовательность бит рассматривается, как целое число. При сдвиге влево ведёт себя как логический сдвиг, при сдвиге вправо уходящий бит исчезает, не влияя на оставшиеся биты, а на месте появившегося бита устанавливается бит, соответствующий знаку. При сдвиге вправо число уменьшается в 2 раза, а при сдвиге влево — увеличивается в 2 раза.

    Арифметический сдвиг в дополнительном коде

    Помимо этого, при арифметическом сдвиге важно учитывать, в каком коде происходит работа.

    Рассмотрим арифметические сдвиги на примерах. Введём сокращения для упрощения:

    • shl — арифметический сдвиг влево;
    • shr — арифметический сдвиг вправо.

    (1) 001 0101 [пр] shl 2 = (1) 101 0100

    (1) 001 0101 [пр] shr 2 = (1) 000 0101

    (1) 001 0101 [обр] shl 2 = (1) 101 0111

    (1) 001 0101 [обр] shr 2 = (1) 110 0101

    (1) 001 0101 [доп] shl 2 = (1) 101 0100

    (1) 001 0101 [доп] shr 2 = (1) 110 0101

    Числа в модифицированном коде сдвигать сложнее, так как надо учитывать факт переполнения и основного кода, в котором происходит сдвиг. Так, при сдвиге влево, если была получена одна из комбинаций переполнения 10 или 01, то дальнейший сдвиг прекращается. При сдвиге вправо происходит восстановление знака, если было переполнение. То есть, если в начале числа была комбинация 01, то восстанавливается знак 00, и если 10 — восстанавливается отрицательное число, начинающееся на 11. После чего сдвиг происходит как сдвиг в привычном для нас прямом, обратном или дополнительном коде. Существуют модифицированный прямой (МПК), обратный (МОК) и дополнительный (МДК) коды. Рассмотрим на паре примеров с арифметическим сдвигом:

    (10) 001 1010 [мпк] shl 2 = останавливаем сдвиг

    (00) 101 0010 [мпк] shl 2 = (01) 010 0100 (сдвиг произошёл на одну позицию и затем остановился, так как произошло переполнение)

    (10) 101 0101 [мок] shr 2 = (11) 111 0101 (первым этапом восстановился знак 11 и произошёл один сдвиг вправо с появлением единицы слева[см. табл выше], затем произошёл ещё один сдвиг с добавлением единицы слева, так как работаем с МОК).

    Статья была написана на основе материалов с википедии и лекционных материалов доцента кафедры ПОИТ БГУИР — Парамонова А.И.

    Представление чисел в компьютерах

    Наименьшая единица информации, которая может быть сохранена компьютером, — это двоичная цифра (обычно сокращается до «бит»). Его значение обычно хранится в памяти как электрический заряд, хранящийся в конденсаторе. Современные микросхемы памяти содержат миллионы этих крошечных конденсаторов, каждый из которых способен хранить ровно один бит информации. Один бит может иметь одно из двух значений в любой момент времени — , одно, или , нулевое, .Как мы увидим, для представления числа больше единицы нам потребуется несколько битов.

    Обзор

    Вообще говоря, одиночные биты используются только для хранения логических значений (истина или ложь). В большинстве языков программирования истинно соответствует одному , а ложно равно нулю .Наименьшая единица данных, которая может быть адресована в памяти компьютера, — это байт . Определение байта менялось на протяжении многих лет, но теперь он обычно считается группой из восьми бит и может использоваться для представления буквенно-цифровых и непечатаемых символов, целых чисел без знака (целых чисел) от 0 до 255. или целые числа со знаком от -127 до +127.


    Байт обычно состоит из восьми бит


    В некоторых текстах группа из восьми битов называется октетом , чтобы избежать возможной двусмысленности.Поскольку шестнадцатеричная система счисления состоит из шестнадцати цифр, каждая из которых может быть указана с использованием всего четырех битов, иногда полезно рассматривать группы из четырех битов как единицу. Такую группу часто называют полубайтом (что, несомненно, доказывает, что у компьютерных ученых все-таки есть чувство юмора!).

    Количество битов, которые могут быть обработаны ЦП за одну машинную операцию, зависит от количества битов, которые он может хранить во внутренних регистрах.На заре вычислений это было относительно небольшое число (четыре или восемь битов). Поэтому в какой-то момент размер регистра процессора совпадал с размером байта. Однако уже много лет этого не происходит. По мере развития архитектуры ЦП мы видели, что размер регистров удваивается и повторно удваивается. Большинство процессоров теперь имеют 32-битные или 64-битные регистры, которые могут содержать четыре или восемь байтов данных соответственно.


    Современный процессор имеет 64-битную архитектуру.


    Единица данных, которая может быть обработана за одну операцию с помощью инструкции машинного кода, называется словом . Слово можно рассматривать как 32-битное или 64-битное двоичное число. Диапазон значений, которые могут быть представлены словом, поэтому зависит от архитектуры микропроцессора и будет определять размер пространства памяти, которое может быть адресовано.

    По состоянию на 2010 год практически все персональные компьютеры способны обрабатывать 64-битные данные, хотя они часто используются в 32-битном режиме для обеспечения поддержки существующего программного обеспечения. Однако имейте в виду, что во многих встроенных системах по-прежнему используются микроконтроллеры с восьми или шестнадцатиразрядными регистрами.

    Целые числа

    Целые числа — это целые числа. Диапазон значений, которые могут быть сохранены в виде целого числа, зависит от того, подписано ли число (т.е. положительное или отрицательное) и сколько памяти выделено для него в памяти. Языки программирования обычно могут представлять целые числа со знаком или без знака и разных размеров.

    Один байт может представлять беззнаковые числа в диапазоне от 0 до 255 или целые со знаком в диапазоне от -128 до +127.Если используются два байта, можно сохранить числа без знака от 0 до 65 535 или числа со знаком от -32 768 до 32 767. Можно представить гораздо большие числа, если будет доступно больше байтов.

    Для чисел со знаком один бит используется для хранения знака (+ или -) числа, поэтому абсолютное значение самого большого числа, которое может быть сохранено, составляет только половину от значения для чисел без знака. Количество битов, используемых для представления целочисленного значения, будет равно количеству байтов, умноженному на восемь.Целое число, представленное n битами, может представлять 2 n чисел.

    Таким образом, величина четырехбайтового целого числа может составлять до 2 (4 × 8) или 2 32 , что означает, что оно может содержать беззнаковое значение до 4 294 967 296 (чуть больше двух миллиардов). Отрицательные числа могут быть представлены несколькими различными способами в двоичных системах счисления, хотя наиболее часто используется метод с дополнением до двух (дополнение до двух рассматривается ниже).

    Числа с фиксированной точкой

    Число с фиксированной точкой используется для представления действительного числа (имеющего дробную часть) с использованием фиксированного количества цифр после точки счисления. Точка системы счисления называется десятичной точкой для вещественных чисел с основанием десять. В двоичных системах счисления это будет называться двоичной точкой .Числа с фиксированной запятой иногда используются там, где используемый процессор не имеет блока с плавающей запятой (FPU), что часто имеет место в недорогих микроконтроллерах.

    Дробные числа с фиксированной запятой обычно представлены целыми числами, которые масштабируются соответствующим коэффициентом (показатель степени ). Например, действительное число 1,234 может быть представлено целым значением 1234 с коэффициентом масштабирования 1 / 1000 (или 10 -3 ), в то время как число 1,234 000 также может быть представлено целым значением 1234. но с коэффициентом масштабирования 1000 (10 3 ).

    Разница между представлением вещественных чисел с фиксированной и плавающей точкой состоит в том, что коэффициент масштабирования остается одинаковым для всех значений, представленных конкретным типом данных с фиксированной точкой. Используемый коэффициент масштабирования (обычно) будет представлять собой степень десяти для денари (базовая десятка) чисел или степень двойки для двоичных чисел.

    Максимальные и минимальные значения, которые могут быть представлены типом данных с фиксированной точкой, будут зависеть от максимального и минимального значений, которые могут быть представлены базовым целочисленным типом данных, и коэффициентом масштабирования.

    Арифметические операции с числами с фиксированной запятой могут давать ответы, которые невозможно точно представить, используя количество мест, доступных до или после точки счисления. В таких случаях ответ будет округлен или усечен. Возможные варианты: либо сохранить тот же числовой формат для ответа и согласиться с некоторой потерей точности, либо преобразовать результат в более подходящий тип данных для сохранения точности.

    В первом подходе количество цифр до и после точки счисления остается неизменным для результата операции.Если в дробной части результата будут потеряны цифры, это будет связано с потерей точности, которая может быть приемлемой во многих случаях. Однако, если в целой части результата пропадают цифры, результат будет в корне неверным.

    При написании программ для систем управления, которые будут реализованы на микропроцессорах, важно понимать ограничения используемого микропроцессора с точки зрения максимального размера целочисленных значений, которые он может хранить.Обычно это будет зависеть от размера его внутренних регистров.

    Числа с плавающей запятой

    С числами с плавающей запятой работать несколько сложнее, потому что точка счисления не занимает фиксированное положение (т.е. она может «плавать» влево или вправо в представлении действительного числа в зависимости от величины числа). В наиболее часто используемых кодировках значение с плавающей запятой хранится как три отдельных компонента: значение , показатель степени и знак .32-битное число с плавающей запятой обычно составляется следующим образом:

    • Значимое — 23 бита
    • Показатель степени — 8 бит
    • Знак — 1 бит

    Значение представляет значащие цифры самого числа, а показатель степени по существу представляет позицию, занимаемую в пределах этих цифр десятичной (или двоичной) точки.Когда значение с плавающей запятой хранится в памяти, оно сначала нормализованное . Это означает перемещение десятичной точки влево до тех пор, пока она не окажется сразу справа от самой значащей (самой левой) цифры. Число разрядов, на которое десятичная точка должна быть перемещена, чтобы достичь этого, является показателем степени.

    В качестве примера возьмем действительное число 1234,56 (имеющее мантиссу 123456). Чтобы нормализовать число, нам нужно переместить точку счисления (в данном случае десятичную точку) на три позиции влево, что приведет к нормализованному значению 1.23456 и показатель степени 3. Поскольку мы смотрим на десятичное (десятичное) число, теперь мы можем записать это число как 1,23456 × 10 3 .

    Точно так же можно поступить и с двоичными действительными числами, за исключением того, что показатель степени будет применяться к основанию числа два. Однако обратите внимание, что дробные значения, такие как 1 / 5 (0,2), которые могут быть представлены точно по основанию десять, не могут быть точно представлены с основанием два.

    Из вышесказанного должно быть очевидно, что максимальное количество цифр, которое можно использовать для представления любого действительного числа в данном формате, будет фиксированным. Отсюда следует, что для любого данного числа точность его представления будет зависеть от количества цифр, необходимых для его точного представления. Если количество требуемых цифр меньше или равно количеству цифр, доступных в данном представлении, потери точности не будет.Если количество требуемых цифр больше доступного, неизбежно произойдет некоторая потеря точности.

    Конечно, для значений, которые не имеют точного представления в данной числовой базе, точность в любом случае будет ограничена. Дробное значение 1 / 3 , например, не может быть точно представлено в десятичной системе счисления, независимо от того, сколько цифр используется после десятичной точки (хотя по мере добавления большего количества цифр сохраненное значение будет более приближаться к фактическое значение).Число, которое не может быть точно представлено в числовой базе независимо от количества используемых цифр, называется без завершения .

    Основное преимущество чисел с плавающей запятой перед числами с фиксированной запятой заключается в том, что они могут представлять гораздо больший диапазон значений. Если мы используем формат с фиксированной точкой с двумя значащими цифрами после десятичной точки, например, мантисса 1234567 может представлять значения 12 345,67, 1234.56, 123,45, 12,34 и так далее. Число с плавающей запятой с тем же значением может представлять такие значения, как 1,234567, 123,456,7, 0,00001234567, 1,234,567,000,000 и т. Д.

    Обратной стороной является то, что формат с плавающей запятой требует большего количества битов для хранения экспоненциальной части числа, поэтому числа с плавающей запятой, которые занимают то же пространство, что и тип данных с фиксированной запятой, достигают большего диапазона за счет некоторой потери точность. Вообще говоря, чем больше диапазон значений, которые мы хотим представить, тем больше битов необходимо для хранения чисел в этом диапазоне.

    Поскольку количество битов, доступных как для значащей, так и для экспоненты, будет фиксированным для данного типа данных действительного числа, языки программирования, как правило, предлагают типы данных с плавающей запятой разного размера (и, следовательно, точности), чтобы программист мог выбрать тип наиболее подходит для предполагаемого назначения переменной. Таким образом, память может использоваться более экономично, чем если бы существовал единый тип данных действительного числа «один размер для всех».Значения с плавающей запятой обычно представлены 32-битными ( одинарной точности ) или 64-битными ( двойной точности ).

    Как мы уже говорили ранее, мантисса хранится как целое число, имеющее фиксированное количество цифр, с подразумеваемой точкой счисления сразу справа от самой значащей цифры. Чтобы получить сохраняемое действительное числовое значение, мантисса должна быть умножена на основание, возведенное в степень экспоненты.Это эффективно переместит точку счисления из предполагаемого положения на количество позиций, заданное показателем степени.

    Если показатель степени положительный, точка системы счисления смещается вправо. Если показатель отрицательный, он смещается влево. В денарном примере число 12345,67 будет нормализовано до 1,234567. Чтобы восстановить исходное значение числа, нормализованное значение необходимо умножить на 10 4 . Обратите внимание, что компьютерное представление двоичных чисел с плавающей запятой стандартизировано в IEEE 754-2008 — стандарте IEEE для арифметики с плавающей запятой.

    Дополнение к одному

    Компьютер использует фиксированное количество бит для хранения каждого из общих типов данных. Например, байт (8 бит) обычно используется для представления буквенно-цифровых символов, целых чисел без знака от 0 до 255 или целых чисел со знаком от -127 до +127.

    Для целочисленных типов данных со знаком диапазон значений, которые могут быть представлены, составляет только половину от диапазона значений для целочисленных типов данных без знака, поскольку старший бит используется для обозначения того, является ли число положительным (0) или отрицательным (1), оставляя на один бит меньше. доступно для представления абсолютного значения числа.

    Диапазон знаковых 4-битных целых чисел, которые могут быть представлены с помощью этой системы (известный как знак и величина ), показан в таблице ниже и иллюстрирует, как работает система. Обратите внимание, что есть два возможных представления нуля (0000 2 = +0 10 и 1000 2 = -0 10 ).


    9011 902 Целые числа со знаком могут быть представлены с помощью ряда альтернативных систем, одна из которых называется до .Используя дополнение до одного, старший бит снова используется для обозначения знака (0 = положительный, 1 = отрицательный), а положительные числа представляются обычным образом (см. Выше).

    Однако, чтобы изменить знак положительного числа (т.е. на отрицать его ) с использованием дополнения, все биты инвертируются (или «переворачиваются»). Другими словами, все единицы заменяются нулями, а все нули заменяются единицами.Следующие двоичные числа являются 8-битным дополнительным представлением 12 10 и -12 10 , соответственно:

    12 10 = 0001100 2

    -12 10 = 1110011 2

    Для тех, кто знаком с булевой логикой, дополнение любого двоичного числа до единицы эквивалентно выполнению над ним побитовой операции НЕ, и должно быть довольно очевидно, что дополнение до единицы отрицательного числа дополнения до единицы является его положительным аналогом.

    8-битное двоичное представление нуля с использованием дополнения до единицы может принимать одну из двух форм — 00000000 2 (+0 10 ) или 11111111 2 (-0 10 ), а также диапазон значений, которые могут быть представлен с использованием 8 битов от -127 10 до +127 10 . Одним из преимуществ использования дополнения является то, что и сложение, и вычитание могут выполняться с использованием двоичного сложения с сквозным переносом (это просто означает, что если есть перенос одного бита в битовую позицию слева от самый старший бит в результате сложения, бит добавляется обратно к младшему значащему биту).

    Чтобы вычесть одно двоичное число x из другого двоичного числа y с использованием дополнения, просто добавьте y к дополнению до единицы x . Два приведенных ниже примера иллюстрируют принцип.

    Пример 1:

    118 10 — 85 10 = 01110110 2 — 01010101 2 = 33 10 = 00100001 2

    01110110
    + 10101010 (дополнение из 01010101)
    ———
    = 100100000 (результат стандартного двоичного сложения)

    = 00100001 (бит переполнения добавляется обратно в LSB)

    Пример 2:

    106 10 + -79 10 (01101010 2 — 10110000 2 ) = 27 10 (00011011 2 )

    01101010
    + 10110000 (дополнение 01001111)
    ———
    = 100011010 (результат стандартного двоичного сложения)

    = 00011011 (бит переполнения добавляется обратно в LSB)

    Дополнение до двух

    Из-за ограничений одного дополнения при выполнении арифметических операций, таких как умножение и деление, наиболее часто используемый способ представления целых чисел со знаком на компьютерах — это использование дополнения до двух , потому что это позволяет реализовать логику, которая обрабатывает арифметические функции. легко в аппаратной части.

    Дополнение до двух двоичного числа — это значение, полученное вычитанием числа из большой степени двойки (в частности, из 2 n для n -битного числа). Как и в случае с дополнением, старший бит используется для обозначения знака (0 = положительный, 1 = отрицательный), и положительные числа представлены таким же образом. Чтобы инвертировать как положительное число, используется его дополнение до двух.

    Если взять в качестве примера беззнаковое число 3 10 , оно будет представлено как положительное 8-битное двоичное число с дополнением до двух как 00000011 2 .Значение 2 8 , выраженное в стандартном двоичном формате, равно 100000000. Следовательно, чтобы найти двойное дополнение +3, мы должны выполнить следующую арифметическую операцию:

    100000000
    — 00000011
    ———
    = 11111101

    Таким образом, отрицательные двоичные числа могут быть представлены с использованием двух дополнений их абсолютного значения.Абсолютное значение наибольшего отрицательного числа, которое может быть представлено заданным числом битов, всегда на единицу больше, чем абсолютное значение наибольшего положительного числа, которое может быть представлено с использованием того же числа битов. Таким образом, 8-битное двоичное число с дополнением до двух может представлять целые числа со знаком от -128 до +127 (обратите внимание, что дополнение до двух к -128 равно -128).

    По схожим причинам ноль имеет только одно представление в двоичной системе с дополнительным двоичным дополнением, поскольку два дополнения нуля равны нулю.Стоит отметить, что двойное дополнение двоичного числа также может быть получено путем добавления и одного к единичному дополнению этого числа.

    Проще говоря, вы можете получить двойное дополнение числа, просто инвертировав все биты (т.е. заменив единицы на нули и нули на единицы), чтобы получить дополнение до единицы, и прибавив к результату один (любой результат перенос самого старшего бита игнорируется).Диапазон знаковых 4-битных целых чисел, которые могут быть представлены с помощью дополнения до двух, показан в таблице ниже.


    4-битные двоичные целые числа со знаком
    Десятичное Двоичное Десятичное Двоичное
    +0 0000-0 1000
    +1 1002 902 902 902 902 000 +2 0010 -2 1010
    +3 0011 -3 1011
    +4 0100 902 902 11902 5 0101-5 1101
    +6 0110 -6 1110
    +7 0111
    902 902 902 -5 9292 Как и дополнение до одного, дополнение до двух позволяет использовать операцию сложения для выполнения как сложения, так и вычитания.Чтобы вычесть одно двоичное число x из другого двоичного числа y с использованием дополнения до двух, просто добавьте y к двоичному дополнению x (любой перенос после старшего разряда просто игнорируется). Два приведенных ниже примера иллюстрируют принцип.

    Пример 1:

    118 10 — 85 10 (01110110 2 — 01010101 2 ) = 33 10 (00100001 2 )

    01110110
    + 10101011 (дополнение до двух 01010101)
    ———
    = 00100001 (результат стандартного двоичного сложения, без учета переполнения)

    Пример 2:

    106 10 + -79 10 (01101010 2 + 10110000 2 ) = 27 10 (00011011 2 )

    01101010
    + 10110001 (дополнение до двух 01001111)
    ———
    = 00011011 (результат стандартного двоичного сложения, без учета переполнения)

    Обратите внимание, что хотя двоичная арифметика (сложение, вычитание, умножение и деление) упрощается за счет использования представления двоичных значений со знаком в дополнительном коде, проблема остается в том, что арифметическая операция с числами, имеющими фиксированное количество битов, вполне может дать результат, который требуется больше, чем количество предоставленных битов.

    Например, сложение 8-битовых целых чисел со знаком 117 10 и 96 10 даст результат 213 10 . Этот результат выходит за пределы диапазона значений, которые могут быть сохранены как 8-битное двоичное целое число со знаком, независимо от типа используемого представления (знак и величина , дополнение до единицы или дополнение до двух ). По этой причине компьютеры будут выполнять проверки, чтобы определить, приведет ли результат арифметической операции к переполнению, и в результате часто потребуется преобразовать значение из одного типа данных в другой (например,грамм. от целого до длинного целого ).

    При преобразовании 8-битного числа с дополнением до двух в 16-битное число с дополнением до двух, происходит процесс расширения знака , в котором повторяется знаковый бит (самый старший бит исходного 8-битного двоичного числа). в каждой битовой позиции слева от него в новой 16-битной версии. Следующие примеры иллюстрируют это:

    Пример 1:

    01010101 2 (+85 10 ) = 00000000 01010101 2 (как 16-битное число)

    Пример 2:

    00111011 2 (-59 10 ) = 11111111 10101011 2 (как 16-битное число)

    Наконец, стоит отметить, что двоичное умножение также относительно просто в системе с дополнением до двух.Например, побитовое умножение 11110100 2 (-12 10 ) и 00001000 2 (+8 10 ) дает результат 11110100000 2 .

    Поскольку мы имеем дело с 8-битными числами, мы можем отбросить три крайних левых бита, оставив 10100000 2 . Поскольку самый старший бит равен 1, мы знаем, что результат имеет отрицательное значение. Дополнение до двух 10100000 2 равно 01100000 2 или 96 10 , поэтому результат представляет -96 10 , что является правильным результатом умножения -12 10 и +8 10 .

    Десятичное число с двоичным кодом

    В электронных системах управления десятичное число с двоичным кодом (BCD) — это метод представления десятичных чисел, в котором каждая десятичная цифра представлена ​​последовательностью двоичных цифр. Это упрощает для системы преобразование числового представления для печати или отображения и ускоряет десятичные вычисления.Основным недостатком является то, что такое представление десятичных чисел занимает больше места в памяти, чем использование более обычного двоичного представления.

    Схема, необходимая для выполнения вычислений, также имеет тенденцию быть более сложной. Каждая десятичная цифра 0-9 представлена ​​четырьмя битами. Дополнительные битовые комбинации могут использоваться для представления знаковых значений (+ или -) или других значений (например, условий переполнения или ошибки). В таблице ниже показаны стандартные кодировки BCD для десятичных цифр 0–9.Обратите внимание, что значения больше 1001 (1010, 1011, 1100, 1101, 1110 или 1111) являются , а не допустимыми десятичными значениями BCD.

    4-битные двоичные целые числа со знаком
    Десятичное Двоичное Десятичное Двоичное
    0 0000-8 1000
    1 11 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 902 0010 -2 1110
    3 0011 -3 1101
    4 0100-4 1011
    6 0110 -6 1010
    7 0111 -7 1001
    902 902 902 902 902 902 902 902
    Представление BCD
    Десятичное Кодирование BCD
    0 0000
    1 0001
    2 0010 0010
    5 0101
    6 0110
    7 0111
    8 1000 1006 9203 902 902 Таким образом, кодировка BCD для числа 123 будет:

    0001 0010 0011

    В отличие от обычного двоичного представления:

    1111011

    Компьютеры обычно хранят данные блоками по 8 бит (так называемые байта ).Используются два основных метода хранения цифр BCD. В первом методе (называемом zoned BCD ) каждое 4-битное BCD-представление десятичной цифры сохраняется в крайних правых четырех битах байта. Все крайние левые четыре бита установлены на ноль или все установлены на единицу в таких системах, как мэйнфреймы, которые используют расширенный двоично-десятичный код обмена (EBCDIC) или на 0011 (в системах, использующих американский стандартный код ). для обмена информацией (ASCII).

    Во второй форме представления две десятичные цифры в кодировке BCD хранятся в одном байте.Отображение числа в кодировке BCD относительно просто для оборудования, потому что каждый из числовых символов отображается в отдельный битовый шаблон, состоящий из четырех двоичных цифр. Таким образом, схема управления, необходимая для отображения каждого числа, относительно проста, поскольку арифметическое преобразование не требуется.

    Другой вариант кодирования BCD, называемый Packaging BCD , использует каждый байт многобайтового слова для хранения двух десятичных цифр в кодировке BCD, кроме самого младшего байта.В этом байте четыре старших бита используются для хранения десятичной цифры в кодировке BCD, но четыре младших бита используются для хранения значения знака (чаще всего 1100 для «+» и 1101 для «-»). Таким образом, 32-битное слово может содержать 7-значное десятичное число со знаком с использованием двоичного десятичного кодирования. Таким образом, число -1 234 567 можно представить следующим образом:

    0001 0010 0011 0100 0101 0110 0111 1101

    Те же значения знака можно использовать с зонным BCD для представления чисел со знаком.Крайние левые четыре бита младшего байта используются для представления знака числа. Следовательно, для EBCDIC-представления -123 используется следующий двоичный шаблон:

    1111 0001 1111 0010 1101 0011

    BCD добавление

    Распакованные числа BCD можно складывать так же, как и другие двоичные числа, с последующим преобразованием результата в соответствующий двоичный формат.Однако, если результат сложения двух чисел BCD больше 9 10 (1001), результат будет недействительным и должен быть исправлен путем добавления 6 10 (0110). Возьмем пример сложения 7 и 8:

    0000 0111
    + 0000 1000
    ———
    = 0000 1111

    Полученный ответ подходит для обычного двоичного сложения (1111 2 = 15 10 ), но приводит к неверному представлению BCD.Чтобы исправить это, нам нужно добавить к результату 6 (0110) следующим образом (обратите внимание, что добавляемое число также должно быть в распакованном формате):

    0000 1111
    + 0000 0110
    ———
    = 0001 0101

    Теперь у нас есть два представленных значения BCD, 1 и 5. Это правильное представление BCD 15 (правильный результат сложения 7 и 8).Однако, чтобы правильно представить это число в распакованном формате BCD, нам нужно сдвинуть крайние левые четыре бита ответа в байт более высокого порядка, как показано ниже.

    0000 0001 0000 0101 = 15 10

    Сложить вместе группы значений BCD сложнее, но в основном это включает добавление каждого набора значений в кодировке BCD справа налево и перенос второй цифры в следующий байт наивысшего порядка (не забывая, конечно, исправить недопустимые результаты BCD, прежде чем делать это).Следующий пример, в котором мы добавим 97 к 48, иллюстрирует принцип (обратите внимание, что значения в кодировке BCD, которые появятся в окончательной кодировке, выделены на каждом этапе):

    Добавьте первый набор значений:

    0000 0111
    + 0000 1000
    ———
    = 0000 1111

    Результатом является недопустимое значение BCD, поэтому добавьте 0110:

    0000 1111
    + 0000 0110
    ———
    = 0001 0101

    Добавьте второй набор значений (плюс 1, взятый из первого добавления):

    0000 1001
    + 0000 0100
    + 0000 0001
    ———
    = 0000 1110

    Этот результат этого добавления также является недопустимым значением BCD, поэтому добавьте 0110:

    0000 1110
    + 0000 0110
    ———
    = 0001 0100

    1 будет перенесен в следующий байт старшего порядка.Общий результат сложения показан ниже (обратите внимание, что тот же метод добавления может быть применен и к упакованному BCD — просто помните, что каждый байт содержит две десятичные цифры в кодировке BCD, а не одну).

    0000 0001 0000 0100 0000 0101 = 145 10

    BCD вычитание

    Двоичное вычитание может выполняться как для упакованных, так и для неупакованных чисел в кодировке BCD так же, как и для чисел, использующих стандартное двоичное представление.Обратите внимание, что, как и в случае с сложением, вычитание может привести к неверному значению BCD. Он также может дать ошибочный ответ, если операция вычитания приводит к заимствованию (из следующего наивысшего значения в кодировке BCD).

    Если возникает какая-либо из этих ситуаций, для получения правильного результата требуется корректировка. Для вычитания нам нужно вычесть 6 (0110) из недопустимого или ошибочного значения BCD. Некоторые примеры проиллюстрируют эту мысль (мы будем использовать упакованные значения BCD для целей этого упражнения).Во-первых, простой пример, который не требует исправлений, — это вычесть 12 из 37:

    0011 0111
    — 0001 0010
    ———
    = 0010 0101

    В следующем примере мы вычтем 19 из 65:

    0110 0101
    — 0001 1001
    ———
    = 0100 1100

    Поскольку крайнее правое значение BCD недопустимо, нам нужно вычесть 6 (0110):

    0100 1100
    — 0000 0110
    ———
    = 0100 0110

    Регулировка дает нам правильный ответ:

    0100 0110 = 46 10

    В последнем примере мы вычтем 18 из 41:

    0100 0001
    — 0001 1000
    ———
    = 0010 1001

    Поскольку при вычитании нам приходилось заимствовать из самого левого значения BCD, самое правое значение BCD в результате является ошибочным, и нам снова нужно вычесть 6 (0110):

    0010 1001
    — 0000 0110
    ———
    = 0010 0011

    И снова корректировка дает нам правильный ответ:

    0010 0011 = 23 10


    Проект документации Linux


    Информация о LDP
    FAQ
    Манифест / лицензия
    История
    Волонтеры / сотрудники
    Должностные инструкции
    Списки рассылки
    IRC
    Обратная связь

    Автор / внесение вклада
    Руководство для авторов LDP
    Внесите свой вклад / Помогите
    Ресурсы
    Как отправить
    Репозиторий GIT
    Загрузок
    Контакты

    Спонсор сайта LDP
    Мастерская

    LDP Wiki : LDP Wiki — это отправная точка для любой незавершенной работы
    Члены | Авторы | Посетители
    Документы

    HOWTO : тематическая справка
    последние обновления | основной индекс | просматривать по категориям
    Руководства : более длинные и подробные книги
    последние обновления / основной указатель
    Часто задаваемые вопросы : Часто задаваемые вопросы
    последние обновления / основной указатель
    страницы руководства : справка по отдельным командам (20060810)
    Бюллетень Linux : Интернет-журнал
    Поиск / Ресурсы

    Ссылки
    Поиск OMF
    Объявления / Разное


    Обновления документов
    Ссылка на недавно обновленные HOWTO.

    Как отрицательные числа хранятся в памяти?

    Как отрицательные числа хранятся в памяти?

    Предварительное условие — базовые преобразования, дополнение до 1 и 2 двоичного числа, дополнение до 2 двоичной строки
    Предположим, что следующий фрагмент кода, int a = -34; Теперь как это будет храниться в памяти. Итак, вот полная теория. Каждый раз, когда встречается число со знаком минус, число (без учета знака минус) преобразуется в его двоичный эквивалент.Затем вычисляется дополнение числа до двух. Дополнение до двух хранится в месте, выделенном в памяти, а знаковый бит будет установлен в 1, потому что сохраняемый двоичный файл имеет отрицательное число. Всякий раз, когда он приходит при доступе к этому значению, сначала проверяется знаковый бит, если знаковый бит равен 1, тогда двоичный файл будет дополнен до двух и преобразован в эквивалентное десятичное число и будет представлен со знаком минус.

    Рассмотрим пример:
    Пример —
    int a = -2056;
    Двоичное число 2056 будет вычислено:

    00000000000000000000100000001000 (32-битное представление, в соответствии с хранением int в C) Дополнение
    2 к вышеуказанному двоичному файлу:
    11111111111111111111011111111000.

    Итак, наконец, вышеуказанный двоичный файл будет сохранен в памяти, выделенной для переменной a.
    Когда дело доходит до доступа к значению переменной a, вышеуказанный двоичный файл будет извлечен из области памяти, затем его знаковый бит, который является крайним левым битом, будет проверяться, поскольку он равен 1, поэтому двоичное число имеет отрицательное число, поэтому оно будет дополнено 2, и когда оно будет дополнено 2, будет получено двоичное число 2056, которое составляет:
    00000000000000000000100000001000

    Вышеупомянутое двоичное число будет преобразовано в его десятичный эквивалент, который равен 2056, и поскольку бит знака был 1, поэтому десятичный число, полученное из двоичного числа, будет представлено со знаком минус.В нашем случае -2056.

    Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные концепции теории CS для собеседований SDE с курсом CS Theory Course по приемлемой для студентов цене и будьте готовы к работе в отрасли.

    Cx51 Руководство пользователя: числа с плавающей запятой

    Home / Руководство пользователя Cx51

    Скаляры типа с плавающей запятой хранятся с использованием четырех байтов. (32 бита). Используемый формат соответствует стандарту IEEE-754.

    Число с плавающей запятой выражается как произведение двух частей: мантисса и степень двойки.Например:

    ± мантисса × 2 показатель степени

    Мантисса представляет собой фактические двоичные цифры число с плавающей запятой.

    Степень двойки представлена ​​показателем степени. Сохраненная форма экспоненты — это 8-битное значение от 0 до 255. Фактическое значение показатель степени рассчитывается путем вычитания 127 из сохраненного значения (От 0 до 255), что дает диапазон от –127 до +128.

    Мантисса — это 24-битное значение (представляющее около семи десятичных знаков). цифры), чей старший бит (MSB) всегда равен 1 и равен следовательно, не хранится.Также есть знаковый бит, который указывает положительное или отрицательное число с плавающей запятой.

    Числа с плавающей запятой хранятся на границах байтов в следующий формат:

    Адрес + 0 Адрес + 1 Адрес + 2 Адрес + 3
    Содержание СМОТРЕТЬ EEEE ЭМММ ММММ ММММ ММММ ММММ

    Где

    S представляет собой знаковый бит, где 1 отрицательно, а 0 — положительный.
    E — показатель степени со смещением 127.
    M — это 24-битная мантисса (хранящаяся в 23 битах).

    Ноль — это специальное значение, обозначаемое полем экспоненты 0 и мантисса 0.

    Используя указанный выше формат, сохраняется число с плавающей запятой -12,5. как шестнадцатеричное значение 0xC1480000. В памяти появляется это значение следующим образом:

    Адрес + 0 Адрес + 1 Адрес + 2 Адрес + 3
    Содержание 0xC1 0x48 0x00 0x00

    Довольно просто преобразовать числа с плавающей запятой в и из их шестнадцатеричные эквиваленты памяти.Следующий пример демонстрирует, как это делается для значения -12,5, показанного выше.

    Представление хранилища с плавающей запятой не является интуитивно понятным формат. Чтобы преобразовать это в число с плавающей запятой, биты должны быть разделены, как указано в формате хранения чисел с плавающей запятой таблица, показанная выше. Например:

    Адрес + 0 Адрес + 1 Адрес + 2 Адрес + 3
    Формат SEEEEEEE EMMMMMMM ММММММММ ММММММММ
    двоичный 11000001 01001000 00000000 00000000
    шестигранник C1 48 00 00

    По этой иллюстрации вы можете определить следующее:

    • Знаковый бит — 1 , что указывает на отрицательное число.
    • Значение экспоненты — 10000010 двоичное или 130 десятичное. Вычитая 127 из 130, получается 3, что является фактическим экспонента.
    • Мантисса выглядит как следующее двоичное число:
        10010000000000000000000 
       

    Слева от мантиссы есть понятная двоичная точка. которому всегда предшествует 1 .Эта цифра опущена в хранимая форма числа с плавающей запятой. Добавляем 1 и двоичная точка в начале мантиссы дает следующее значение:

      1.10010000000000000000000 
     

    Чтобы настроить мантиссу для экспоненты, переместите десятичную точку в слева для отрицательных значений показателя или справа для положительного показателя значения. Поскольку показатель степени равен трем, мантисса корректируется как следует:

      1100.10000000000000000000 
     

    Результат — двоичное число с плавающей запятой. Двоичные цифры в слева от десятичной точки представляют собой степень двойки, соответствующую их позиция. Например, 1100 представляет (1 × 2 3 ) + (1 × 2 2 ) + (0 × 2 1 ) + (0 × 2 0 ), что составляет 12 .

    Двоичные цифры справа от десятичной точки также представляют степень двойки, соответствующая их положению.Однако полномочия отрицательный. Например, . 100 … представляет (1 × 2 -1 ) + (0 × 2 -2 ) + (0 × 2 -3 ) + … что равно ,5 .

    Сумма этих значений составляет 12,5 . Поскольку бит знака был установлено, это число должно быть отрицательным.

    Итак, шестнадцатеричное значение 0xC1480000 равно -12,5 .

    Статьи базы знаний по теме

    Представление чисел с плавающей запятой

    Представление чисел с плавающей запятой

    Числа с плавающей запятой представлены некомпьютерами (людьми) в научных обозначение (** означает возведение в степень)

    4.01 X 10 ** 8 = 401 000 000,0
    4,01 Х 10 ** — 3 = 0,00401
    — 4,01 X 10 ** 8 = -401 000 000,0
    -4,01 Х 10 ** — 3 = -0,00401

    Из этих примеров очевидно, что число с плавающей запятой представлено с использованием

    2 числа — показатель степени и мантисса
    2 знака — один для экспоненты и один для мантиссы

    Компьютер представляет каждое из этих чисел со знаком по-разному в виде плавающей номер точки

    показатель степени и знак — избыточное обозначение 7FH
    мантисса и знак — величина со знаком

    Числа с плавающей запятой с использованием десятичных цифр и Превышение 49 Обозначения

    В этом абзаце будут использоваться десятичные цифры вместе с лишними 49 обозначение экспоненты.Это сделано для того, чтобы немного усвоить математику. Полегче. Однако формат для компьютера конструктивно похож, но шестнадцатеричные цифры используются с избыточной нотацией 7FH.

    Восемь цифр используются для представления числа с плавающей запятой: две для числа показатель степени и шесть для мантиссы. Знак мантиссы будет представлен как + или -, но в компьютере это обозначается битом: 1 означает отрицательное, 0 означает положительный.

    Вот примеры выше в формате, распознаваемом компьютером.

    4.01 Х 10 ** 8 = +57401000
    4,01 Х 10 ** — 3 = +46401000
    — 4,01 Х 10 ** 8 = -57401000
    -4.01 Х 10 ** — 3 = -46401000

    Это представление упрощает сравнение чисел. Если два числа имеют того же знака, то их можно численно сравнить после знакового бита с определить, какое число больше.

    Фактическое представление в компьютере

    Все не так просто, как указано в предыдущем абзаце.Если указанному выше формату, тогда потребуется 33 бита для представления плавающего номер точки (1 бит для знака, 4 бита для каждой шестнадцатеричной цифры). 33 — плохо, 32 хорошо. Итак, как отбрасывается лишний бит? Абсолютным обманом!

    Фактически, достигается вся точность указанного выше формата, но это выполняется с использованием 32 бита вместо 33. Хитрость заключается в том, чтобы помнить, что в на самом деле эти числа хранятся в двоичном формате. Кроме того, каждое число всегда в НОРМАЛИЗОВАННОЙ форме, что означает, что он начинается с 1, а не с 0.Показатель всегда корректируется так, чтобы исключить любые ведущие 0 из мантиссы. Так что это это то место, где вжимается (или выдавливается) дополнительный бит. Если КАЖДЫЙ номер начинается с 1, тогда зачем хранить его в памяти? Почему бы просто не поставить в программе 1 в начале каждой мантиссы?

    Используя этот трюк, можно изменить расположение числа на компьютере.

    1 бит для знака, 8 бит для экспоненты, 23 бита для мантиссы

    Однако, поскольку ведущий бит мантиссы никогда не сохраняется, тогда на самом деле 24 бита для мантиссы.Довольно подлый.

    Представление двоичных чисел с десятичными знаками

    В базе 10 число 0,123 представляет

    1/10 + 2/100 + 3/1000
     

    Какое значение имеют знаменатели 10, 100, 1000? Они степени основания (основание 10). Итак, что бы представляло число 0,101 в двоичный?

    1/2 + 0/4 + 1/8 = 5/8
     

    поскольку степени двойки равны 2, 4, 8.

    Есть другой способ вычислить это, просто посчитайте количество десятичных знаков. мест и возведите 2 в эту степень.Поскольку в в этом примере знаменатель равен 2 ** 3 = 8. Затем просто вычислите числитель в виде двоичного числа, в данном случае 5. Таким образом, окончательное число — 5/8.

    Вот еще несколько примеров

    101,1101 = 5 13/16
    - 11101.11101 = - 29 29/32
    0,001011 = 11/64
     

    Примеры компьютерного хранения чисел с плавающей запятой

    Пример для 5 13/16
    101.1101
    нормализованное число = 1.011101 * 2 ** 2
    
    знак мантиссы = 0
    мантисса = 011101 (ведущая 1 не сохраняется)
    избыточная экспонента 7FH = 81H = 10000001 в двоичной системе
    
    Двоичное представление числа
    0 10000001 01110100000000000000000
    
    Перегруппировать
    0100 0000 1011 1010 0000 0000 0000 0000
    
    Шестнадцатеричное представление числа
    
    40BA0000
     
    Пример для -29 29/32
    - 11101.11101
    нормализованное число = 1,110111101 * 2 ** 4
    
    знак мантиссы = 1
    мантисса = 110111101 (ведущая 1 не сохраняется)
    избыточная экспонента 7FH = 83H = 10000011 в двоичной системе
    
    Двоичное представление числа
    1 10000011 110111101000000000000000
    
    Перегруппировать
    1100 0001 1110 1111 0100 0000 0000 0000
    
    Шестнадцатеричное представление числа
    
    C1EF4000
     
    Пример для 11/64
    0,001011
    нормализованное число = 1,011 * 2 ** (- 3)
    
    знак мантиссы = 0
    мантисса = 011 (ведущая 1 не сохраняется)
    превышение 7FH экспоненты = 7CH = 01111100 в двоичной системе
    
    Двоичное представление числа
    0 01111100 01100000000000000000000
    
    Перегруппировать
    0011 1110 0011 0000 0000 0000 0000 0000
    
    Шестнадцатеричное представление числа
    
    3E300000
     

    Стандартные форматы для чисел с плавающей запятой

    Существует два стандартных формата чисел с плавающей запятой согласно IEEE.

    Приведенное выше описание относится к краткому вещественному формату IEEE, который использует 32 бита.
    Существует также формат IEEE Long Real, использующий 64 бита; 1 бит для знак, 11 бит для экспоненты и 52 бита для мантиссы.

    5.2: Введение в компьютерную организацию

    Архитектура компьютера

    Чтобы понять системы обработки цифровых сигналов, мы должны немного понять, как компьютеры выполняют вычисления. Современное определение компьютера — это электронное устройство, которое выполняет вычисления с данными, представляя результаты людям или другим компьютерам различными (надеюсь, полезными) способами.

    Рис. 5.2.1 Типовая организация компьютерного оборудования

    Стандартный компьютер содержит входных устройств (клавиатура, мышь, аналого-цифровой (аналого-цифровой) преобразователь и т. Д.)), вычислительный блок и устройства вывода (мониторы, принтеры, цифро-аналоговые преобразователи). Вычислительный блок является сердцем компьютера и обычно состоит из центрального процессора , (ЦП), памяти и интерфейса ввода / вывода (I / O). Какие устройства ввода-вывода могут присутствовать на данном компьютере, сильно различаются.

    • Простой компьютер в основном работает в дискретном времени. Компьютеры — это синхронизируемых устройств , в которых этапы вычислений происходят периодически в соответствии с тактами часов.Это описание опровергает тактовую частоту: когда вы говорите «У меня компьютер с частотой 1 ГГц», вы имеете в виду, что вашему компьютеру требуется 1 наносекунда для выполнения каждого шага. Это невероятно быстро! «Шаг», к сожалению, не обязательно означает вычисление, подобное сложению; компьютеры разбивают такие вычисления на несколько этапов, что означает, что тактовая частота не обязательно должна выражать скорость вычислений. Вычислительная скорость выражается в миллионах инструкций в секунду (Mips). Компьютер с тактовой частотой 1 ГГц может иметь скорость вычислений 200 Mips.
    • Компьютеры выполняют целочисленные (дискретные) вычисления. Компьютерные вычисления могут быть числовыми (подчиняющимися законам арифметики), логическими (подчиняющимися законам алгебры) или символическими (подчиняющимися любому закону, который вам нравится). 1 Каждая компьютерная команда, которая выполняет элементарные числовые вычисления — сложение, умножение или деление — выполняет это только для целых чисел. Сумма или произведение двух целых чисел также является целым числом, но частное двух целых чисел, скорее всего, не будет целым числом.Как компьютер работает с числами, в которых цифры находятся справа от десятичной точки? Эта проблема решается путем использования так называемого представления вещественных чисел с плавающей запятой . Однако по своей сути это представление основано на целочисленных вычислениях.

    Представляющие числа

    Если говорить о числах, то все числа могут быть представлены в позиционной системе счисления . 2 В системе позиционного представления b используется позиция цифр от 0 до b -1 для обозначения числа.{k} \ right) \]

    Все числа могут быть представлены в виде их знаковых, целых и дробных частей. Комплексные числа можно рассматривать как два действительных числа, которые подчиняются особым правилам для управления ими.

    Люди используют основание 10, что обычно считается результатом того, что у нас десять пальцев. Цифровые компьютеры используют двоичное представление числа с основанием 2 или , каждая цифра которого известна как бит ( b inary dig it ).

    Рис. 5.2.2 Проиллюстрированы различные способы представления чисел в двоичном формате.Количество байтов для компонентов экспоненты и мантиссы чисел с плавающей запятой варьируется.

    Здесь каждый бит представлен как «высокое» или «низкое» напряжение, тем самым представляя «1» или «0» соответственно. Для представления значений со знаком мы добавляем специальный бит — знак , бит — для выражения знака. Память компьютера состоит из упорядоченной последовательности байта , совокупности восьми бит. Таким образом, байт может представлять собой беззнаковое число в диапазоне от 0 до 255 .Если мы возьмем один из битов и сделаем его битом знака, мы сможем сделать тот же байт для представления чисел в диапазоне от -128 до 127 . Но компьютер не может представить всех возможных действительных чисел. Ошибка не в двоичной системе счисления; проблема заключается скорее в ограниченном количестве байтов. Хотя гигабайт памяти может показаться большим, требуется бесконечное количество битов, чтобы представить π . Поскольку мы хотим хранить много чисел в памяти компьютера, мы ограничены теми, которые имеют конечное двоичное представление .Большие целые числа могут быть представлены упорядоченной последовательностью байтов. Обычные длины, обычно выражаемые в количестве битов, равны 16, 32 и 64. Таким образом, 32-битное число без знака может представлять целые числа в диапазоне от 0 до 2 32 -1 (4 294 967 295), число почти достаточно велико, чтобы перечислить каждого человека в мире! 3

    Упражнение \ (\ PageIndex {1} \)

    Для 32-битных и 64-битных целочисленных представлений, какие наибольшие числа могут быть представлены, если также должен быть включен знаковый бит.

    Решение

    Для b -битных целых чисел со знаком наибольшее число равно 2 b-1 — 1 . Для b = 32 мы имеем 2 147 483 647 , а для b = 64 имеем 9 223 372 036 854 775 807 или примерно 9,2 × 10 18 .

    Хотя эта система хорошо представляет целые числа, как насчет чисел с ненулевыми цифрами справа от десятичной точки? Другими словами, как представлены числа с дробными частями? Для таких чисел используется двоичная система представления, но с немного большей сложностью.{e}} \]

    Мантисса обычно принимается как двоичная дробь, величина которой находится в диапазоне

    .

    \ [\ left [\ frac {1} {2}, 1 \ right) \]

    , что означает, что двоичное представление таково, что

    \ [d _ {- 1} = 1 \]

    4 Число ноль является исключением из этого правила, и это число с плавающей запятой только , имеющее нулевую дробь. Знак мантиссы представляет собой знак числа, а показатель степени может быть целым числом со знаком.

    Компьютерное представление целых чисел либо совершенное, либо только приближенное, последняя ситуация возникает, когда целое число превышает диапазон чисел, который может представлять ограниченный набор байтов. Представления с плавающей запятой имеют аналогичные проблемы с представлением: , если число

    Упражнение \ (\ PageIndex {1} \)

    Какие наибольшие и наименьшие числа могут быть представлены в 32-битной системе с плавающей запятой? в 64-битной с плавающей запятой, у которой шестнадцать битов выделены для экспоненты? Обратите внимание, что для экспоненты и мантиссы требуется знаковый бит.{9863} \]

    Пока целые числа не слишком велики, они могут быть точно представлены на компьютере с использованием двоичной позиционной записи. Электронные схемы, составляющие физический компьютер, могут без ошибок складывать и вычитать целые числа. (Это утверждение не совсем верно; когда сложение вызывает проблемы?)

    Компьютерная арифметика и логика

    Двоичные таблицы сложения и умножения:

    \ [\ begin {pmatrix} 0 + 0 = 0 \\ 0 + 1 = 1 \\ 1 + 1 = 10 \\ 1 + 0 = 1 \\ \\ 0 \ times 0 = 0 \\ 0 \ times 1 = 0 \\ 1 \ times 1 = 1 \\ 1 \ times 0 = 0 \ end {pmatrix} \]

    Обратите внимание, что если переносы игнорируются, 7 вычитание двух однозначных двоичных чисел дает тот же бит, что и сложение.Компьютеры используют значения высокого и низкого напряжения для выражения бита, а массив таких напряжений выражает числа, похожие на позиционную нотацию. Логические схемы выполняют арифметические операции.

    Упражнение \ (\ PageIndex {1} \)

    Добавьте двадцать пять и семь к основанию 2. Обратите внимание на возможные переносы. Почему результат «хороший»?

    Решение

    \ [25 = 110011_ {2} \; а также\; 7 = 111_ {2} \]

    Мы находим, что

    \ [110011_ {2} + 111_ {2} = 100000_ {2} = 32 \]

    Переменные логики указывают на правду или ложь. A∩B , И из A и B , представляет собой утверждение, что и A, и B должны быть истинными, чтобы утверждение было истинным. Вы используете этот вид оператора, чтобы сообщить поисковым системам, что вы хотите ограничить совпадения случаями, когда происходят оба события A и B . AUB , OR из A и B , дает значение истины, если одно из них истинно. Обратите внимание, что если мы представляем истину «1», а ложь — «0», двоичное умножение соответствует И, а сложение (игнорирование переносов) — XOR .Исключающее ИЛИ, оператор исключающего ИЛИ, равняется объединению AUB и A ∩B . Ирландский математик Джордж Буль обнаружил эту эквивалентность в середине девятнадцатого века. Он заложил основу того, что мы сейчас называем булевой алгеброй, которая выражается в виде логических формул уравнений. Что еще более важно, любой компьютер, использующий представления по основанию 2 и арифметику, также может легко вычислять логические утверждения. Этот факт делает вычислительное устройство на основе целых чисел гораздо более мощным, чем может показаться.

    Сноски

    1. Примером символьного вычисления является сортировка списка имен.
    2. Существуют альтернативные системы представления чисел. Например, мы могли бы использовать подсчет фигурок или римские цифры. Они были полезны в древности, но очень ограничивали, когда дело доходит до арифметических вычислений: когда-нибудь пробовали разделить две римские цифры?
    3. Для этого вам понадобится еще один бит.
    4. В некоторых компьютерах эта нормализация доведена до крайности: начальная двоичная цифра явно не выражена, обеспечивая дополнительный бит для более точного представления мантиссы.Это соглашение известно как нотация скрытых единиц .
    5. Посмотри, сможешь ли ты найти это изображение.
    6. Обратите внимание, что всегда будет чисел, которые имеют бесконечное представление в любой выбранной позиционной системе. Выбор базы определяет, что делать, а что нет. Если вы думали, что числа с основанием 10 решат эту неточность, обратите внимание, что 1/3 = 0,333333 … имеет бесконечное представление в десятичном виде (и двоичном, если на то пошло), но имеет конечное представление в базе 3.
    7. Перенос означает, что вычисление, выполняемое в данной позиции, также влияет на другие позиции. Здесь 1 + 1 = 10 — это пример вычисления, которое включает перенос.

    Компьютерная терминология — двоичная

    Ваш персональный компьютер тип цифровой электронной вычислительной машины. Он называется цифровым, потому что вся информация внутри него представлена ​​и обрабатывается в виде чисел (исходное значение слова «цифра» — «палец», а поскольку люди часто считают пальцами, термин «цифра» также стал применительно к числам).Все числа в таблице, весь текст символы в документе Word, все изображения и звуки, хранящиеся на компьютере, ВСЕ представлены в виде чисел.

    Используемая система счисления — основание. 10 (так как у людей 10 пальцев, это хорошо для них). Например, когда вы пишете число 1853, это означает:

    .

    Каждая цифра (0-9) в числе по основанию 10 умножается. степенью десяти, соответствующей его положению.Обратите внимание, что каждый разряды цифры в 10 раз превышают значение разряда справа от Это. Но вы, конечно, все это знали.

    Двоичные числа

    Но что за бедный компьютер, у которого нет пальцев к рассчитывать на? База 10 неудобна для использования без пальцевого компьютера. В компьютерах ДЕЙСТВИТЕЛЬНО есть электрические цепи: либо на , либо на . Всего два состояния для работы.Итак, натуральная система счисления для использования в электронный компьютер — это основание 2 (так называемое двоичное число система). В отличие от вас, у которого есть десять цифр для вычисления (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) компьютер имеет только две цифры (0 и 1), с которыми он должен делать все. Итак, в памяти компьютера крошечный транзистор то есть на (проводящий ток) может представлять 1, в то время как транзистор, который находится на от , будет представлять а 0 (ноль).

    Двоичное число 11100111101, например, означает:

    А! Значит их количество одинаковое!

    1853 (основание 10) = 11100111101 (основание 2)

    Обратите внимание, что каждая позиция двоичной цифры в числе с основанием 2 имеет 2 -кратное значение позиции двоичной цифры справа от него (поскольку это база 2; помните, как работала база 10).

    Становится громоздко сказать «двоичный цифра »все время, поэтому был изобретен более короткий термин «бит».Немного one b inary dig it . Немного может удержать 1 или 0 (ноль). Строка битов может содержать большие числа (точно так же, как вы используете строки с основанием 10 цифр для представления чисел больше 9).

    Двоичное представление чисел
    База 10 База 2
    0 00000000
    1 00000001
    2 00000010
    3 00000011
    4 00000100
    5 00000101
    65 01000001
    66 01000010
    67 01000011
    254 11111110
    255 11111111

    Возникает фрагмент компьютерной памяти очень удобного размера. быть длиной 8 бит.Блок памяти этого размера может использоваться для представления любое число от нуля (00000000) до 255 (11111111). Почему 11111111 (основание 2) равно 255 (основание 10)? Потому что это означает:

    1 х 128 + 1 х 64 + 1 х 32 + 1 х 16 +
    1 х 8 + 1 х 4 + 1 х 2 + 1 х 1 = 255

    И почему это кусок памяти удобного размера? Потому что, если мы хотим представить все символы английского алфавита, 8 цифры — это первая степень двойки, которая дает вам достаточно возможностей для сделайте это (4-битный кусок может содержать только числа от нуля до 7…нет достаточно).

    У нас есть специальное имя для блока памяти, равного 8 длиной в битах: это называется байтом. Это базовая единица, которую мы используем для измерения объема памяти компьютера. (Кусок памяти Длина 4 бита называется «ниббл», но вам не нужно знать, что для теста.)

    Текстовые символы представлены в память компьютера в виде чисел. Как? Вам нужна схема для приравнивания букв к числам. Используемая система называется кодом ASCII. (Американский стандартный код для обмена информацией).Заглавная буква A представлен номером 65 в код ASCII ( 65 — это 01000001 в двоичный). Первые 65 кодов ASCII (от 0 до 64) используются для ассортимента. управляющих символов и специальных символов, поэтому заглавная A закончилась до 65. Капитал B 66 ( 01000010 ) и так далее.

    Представление символов в формате ASCII (всего лишь образец)
    Персонаж База 10 База 2
    (возврат) 13 00001101
    (пространство) 32 00100000
    ! 33 00100001
    1 49 00110001
    2 50 00110010
    @ 64 01000000
    А 65 01000001
    B 66 01000010
    С 67 01000011
    и 97 01100001
    б 98 01100010
    в 99 01100011
    (удалить) 127 01111111

    Как компьютер узнает, что 01000001 в байт памяти — это число 65 или буква A ? Поскольку прикладная программа отслеживает, что она помещает в память, поэтому MS Word знает, что данный байт, в котором хранится текст, содержит числа, обозначающие буквы.

    Для иностранных алфавитов, которые содержат намного больше букв, чем Английский (например, японский кандзи) — новое расширение схемы ASCII. называется Теперь используется Unicode (он использует два байта для хранения каждая буква; два байта дают 65 535 различных значений для представления символов).

    Изображения также представлены в компьютере в виде чисел. Если вы внимательно посмотрите на экран дисплея, вы увидите, что изображение на нем состоит из множества маленьких пятен, называемых элементами изображения (которые чаще всего сокращается до пикселя).Каждый пиксель изображения на экране компьютера может быть представлен тремя байтами; числа в байтах сообщают дисплею, сколько красного, синего и зеленого свет следует смешать, чтобы получить цвет пикселя (три байты могут представлять миллионы возможных цветов для каждого пикселя).

    Программы, которые выполняет компьютер, также хранятся как числа.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *