для каких чисел используется знаковое представление
Представление информации
Для представления целых чисел в компьютере существуют два представления: беззнаковое (для неотрицательных чисел) и знаковое.
Если нужно представлять не только положительные, но и отрицательные значения, обычно используют дополнительный код. Он имеет следующие особенности:
Для положительных чисел дополнительный код совпадает с прямым (т.е. фактически его двоичной записью).
Фактически, дополнительный код — это число, которое нужно добавить к модулю исходного, чтобы достичь переполнения разрядной сетки. От этого и происходит название «дополнительный».
Для получения дополнительного кода отрицательного числа следует сделать следующее:
Пример работы с числами в дополнительном коде
7210 = 10010002. Запись в восьмиразрядной сетке: 01001000.
Таким образом получаем запись в дополнительном коде: 11010010.
Сложим полученные числа:
Перенос из старшего разряда выходит за разрядную сетку и просто отбрасывается: 00011010.
Полученное число переведем в десятичную систему счисления:
Числа с плавающей точкой
Для представления вещественных (действительных) чисел в современных компьютерах принят способ представления с плавающей точкой (запятой). Этот способ представления опирается на нормализованную (ее еще называют экспоненциальной) запись действительных чисел.
0,123456789 = 0,123456789 ⋅ 10 0 ;
Для хранения чисел с плавающей точкой в компьютерах обычно отводится 4, 8 или 10 байт.
Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа.
Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего до наибольшего представимого числа.
Найти в Интернет более подробную информацию о кодировании чисел
Текст — это последовательность символов (букв, цифр, знаков препинания, математических знаков и т.д.). Как и любая другая информация, в компьютере текст представляется двоичным кодом. Для этого каждому символу ставится в соответствие некоторое положительное число, двоичная запись которого и будет записана в память компьютера. Соответствие между символом и его кодом определяется кодовой таблицей.
Современные кодовые таблицы ведут начало от американского стандартного кода обмена информацией ASCII (American Standard Code for Information Interchange). Он был семибитным и, соответственно, позволял представить 2 7 =128 различных символов. Таблица включала буквы латинского алфавита, цифры, основные знаки и управляющие символы (перевод строки, возврат каретки, табуляция и др.).
В дальнейшем широкое распространение получили восьмибитные кодировки, в которых каждый символ текста был представлен полным байтом. В большинстве из них первые 128 кодов повторяли таблицу ASCII, а следующие («верхняя половина кодовой таблицы») использовались для представления символов национальных алфавитов и полиграфических знаков.
Во многих случаях для одного и того же языка было создано несколько кодировок. Например, для кодирования русскоязычных текстов достаточно широко использовалось (и до сих пор в некоторых случаях используются) пять кодировок:
Основные недостатки восьмибитных кодировок:
Для устранения этих недостатков в 1991 году был предложен стандарт Unicode («Юникод»). Он включает универсальный набор символов (UCS, Universal Character Set) и форматы машинного представления их кодов (UTF, Unicode Transformation Format).
Первая версия Юникода представляла собой кодировку с фиксированным размером символа в 16 бит, то есть общее число кодов было 2 16 (65 536). Отсюда происходит практика обозначения символов четырьмя шестнадцатеричными цифрами (например, U+0410). При этом в Юникоде планировалось кодировать не все существующие символы, а только те, которые необходимы в повседневном обиходе.
В дальнейшем было принято решение расширить набор символов за счет различных способов кодирования. Поскольку в ряде систем уже началось использование 16-битной версии Unicode, за основными символами сохранили принятые в ней коды (образовавшие «основную многоязычную плоскость»), а для более редко применяемых назначили «суррогатные пары» — четырехбайтные коды. Эта система кодирования получила обозначение UTF-16. В UTF-16 можно отобразить только 2 20 +2 16 −2048 (1112064) символов, это число и было выбрано в качестве окончательной величины кодового пространства Юникода. Но и этого более чем достаточно — сейчас используется немногим более 100000 кодовых позиций. Unicode включает символы практически всех современных, а также многих древних систем письма.
Для обеспечения совместимости со старыми системами, использовавшими 8-битное кодирование, была разработана система кодирования UTF-8. Она использует коды переменной длины: для символов, входящих в ASCII, применяются коды длиной 1 байт, полностью совпадающие с кодами ASCII. Для остальных символов — коды длиной от 2 до 4 байт (теоретически, до 6).
Существует также UTF-32, в которой для записи любого символа используется 4 байта. Из-за очень неэкономного расхода памяти (в 2-4 раза больше, чем UTF-8, и почти вдвое больше, чем UTF-16) на практике она используется достаточно редко.
В Интернет наибольшее распространение получила система кодирования UTF-8, в MS Windows преимущественно используют UTF-16, в Unix-подобных ОС (включая Linux и Mac OS X) — в основном UTF-8.
В отличие от чисел и текста, графическая и звуковая информация по своей природе — аналоговая (т.е. представляется непрерывным изменением некоторой величины). Компьютер же может работать только с дискретной («разрывной», представляемой скачкообразными изменениями). Поэтому непосредственно закодировать изображение или звук невозможно.
И для одного, и для другого вида информации существуют два способа представления: либо искусственно разбить на малые элементы, либо описать правила формирования.
Представление чисел в компьютере
После того, как мы узнали об основных единицах для измерения информации необходимо разобраться с тем, как в ЭВМ хранятся различные типы данных. В этой статье мы поговорим про представление чисел в компьютере.
Основные понятия и положения
Прежде чем начать разбираться в теме, следует понимать, что все ЭВМ, на данный момент времени, работают с двоичной системой счисления. Это значит, что и вся информация (звуковая, графическая или текстовая) хранится в памяти ПК в виде последовательностей нулей и единиц.
Схематично компьютерная память выглядит так, как показано на схеме ниже:
Как видно из рисунка внутренняя память представляет собой разряды, каждый из которых содержит один бит информации (0 или 1). А восемь битовых кластеров образуют один байт (машинное слово).
Машинное слово – минимально адресуемая ячейка памяти, которую за раз можно обработать командой процессора. То есть минимально процессор может обработать один байт.
Отсюда также вытекает правило, что данные в компьютере представляются дискретно (отдельно). В качестве примера приведем изображение на мониторе. Оно состоит из точек (пикселей). Цвет же каждой точки задается последовательностью из 0 и 1.
Представление чисел в компьютере
Существует несколько вариантов для отображения чисел в ЭВМ, и зависят они от формата числа.
Представление целых чисел в ЭВМ
Для представления целых чисел, в вычислительных машинах существует несколько способов, которые используют 8,16, 24 или 32 разряда памяти (1, 2, 3 и 4 байта).
Первым способом является беззнаковое представление. С его помощью представляются только целые положительные величины, которые не участвуют в арифметических операциях и выступают в роли констант (дата, время и т.д.).
Чтобы представить число в беззнаковой форме необходимо перевести его в двоичную систему счисления и дополнить с начала нулями до нужной разрядности (дополняем до 1,2,3 или 4 байт).
Также следует отметить, что есть ограничения на количество чисел, которые можно представить в n разрядной ячейке. Для беззнаковых величин оно составляет \( 2^n \).
Пример: Перевести 54 в беззнаковый формат.
Находим представление 54 в бинарной системе счисления:
\( 1) \ 54:2 \ = \ 27 \ | \ Остаток \ 0 \)
\( 2) \ 27:2 \ = \ 13 \ | \ Остаток \ 1 \)
\( 3) \ 13:2 \ = \ 6 \ | \ Остаток \ 1 \)
\( 4) \ 6:2 \ = \ 3 \ | \ Остаток \ 0 \)
\( 5) \ 3:2 \ = \ 1 \ | \ Остаток \ 1 \)
Итого \( 54_ <10>\) равняется \( 110110_ <2>\).
Дополняем результат до одной из стандартных разрядностей (8 бит) = 00110110.
Ответ: 00110110.
Для представления чисел, которые участвуют в вычислительных операциях, используется представление со знаком. В такой форме записи старший разряд всегда отводится под знак (0 для положительных чисел и 1 для отрицательных).
В случае со знаковым представлением также существуют ограничения. Так как один разряд отводится под знак, то в n-разрядную ячейку можно записать \( (2^
Также следует отметить следующую особенность — все отрицательные значения в компьютере хранятся в обратном или дополнительном коде, а положительные в прямом.
Для того чтобы перевести число в обратный и дополнительный код вам надо:
Почему же для хранения отрицательных чисел используют обратный или дополнительный код? Это позволяет изменить операцию вычитания на операцию сложения. В противном случае компьютеру бы каждый раз приходилось выяснять, где положительная величина, а где отрицательная и после этого сравнивать их модули, для определения конечного знака, что очень сильно усложняло бы весь алгоритм.
Представление вещественных чисел
Всего существует два способа для представления множества вещественных значений – естественная или экспоненциальная форма.
В жизни мы пользуемся естественной формой. Так число 42,6 мы можем записать несколькими способами. Например:
В компьютере же используется экспоненциальная форма записи. Выглядит она так:
Здесь m – мантисса, которая представляет собой правильную дробь (в правильных дробях числитель меньше знаменателя).
q – система счисления, в которой представлено число.
P – порядок.
В ЭВМ отводится один разряд под знак мантиссы, один под знак порядка и различное число бит под саму мантиссу и порядок. Данный формат записи называется «С плавающей запятой».
Чем больше бит отводится под мантиссу, тем точнее представляемая величина, чем больше ячеек отводится под порядок, тем шире диапазон от наименьшего числа, до наибольшего числа, представляемого в компьютере при заданном формате.
Так как компьютерная память величина дискретная и конечная, то и множество вещественных чисел, с которым работает ЭВМ также конечно.
Видео
Заключение
Вот мы и разобрались с представлением чисел в компьютере и информатике. Краткий материал из данной статьи вы можете использовать для своей онлайн-презентации. При возникновении вопросов оставляйте их в комментариях.
Не существует окончательного критерия, по которому любое из представлений является универсально превосходящим. Для целых чисел представление, используемое в большинстве современных вычислительных устройств, является дополнением до двух, хотя в мэйнфреймах серии Unisys ClearPath Dorado используется дополнение до единиц.
СОДЕРЖАНИЕ
История
Знаковое представление величины
Дополнение
Двоичное значение | Дополнительное толкование | Неподписанная интерпретация |
---|---|---|
00000000 | +0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111101 | 125 | 125 |
01111110 | 126 | 126 |
01111111 | 127 | 127 |
10000000 | −127 | 128 |
10000001 | −126 | 129 |
10000010 | −125 | 130 |
⋮ | ⋮ | ⋮ |
11111101 | −2 | 253 |
11111110 | −1 | 254 |
11111111 | −0 | 255 |
Чтобы сложить два числа, представленных в этой системе, выполняется обычное двоичное сложение, но затем необходимо выполнить сквозной перенос : то есть добавить любой результирующий перенос обратно в результирующую сумму. Чтобы понять, почему это необходимо, рассмотрим следующий пример, показывающий случай добавления −1 (11111110) к +2 (00000010):
В предыдущем примере первое двоичное сложение дает 00000000, что неверно. Правильный результат (00000001) появляется только при добавлении переноса.
Два дополнения
Двоичное значение | Интерпретация дополнения до двух | Неподписанная интерпретация |
---|---|---|
00000000 | 0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111110 | 126 | 126 |
01111111 | 127 | 127 |
10000000 | −128 | 128 |
10000001 | −127 | 129 |
10000010 | −126 | 130 |
⋮ | ⋮ | ⋮ |
11111110 | −2 | 254 |
11111111 | −1 | 255 |
Более простой способ получить отрицание числа в дополнении до двух выглядит следующим образом:
Пример 1 | Пример 2 | |
---|---|---|
1. Начиная справа, найдите первую «1» | 0010100 1 | 00101 1 00 |
2. Инвертируйте все биты слева от этой «1». | 1101011 1 | 11010 100 |
Пример: для +2, что равно 00000010 в двоичном формате (символ
X означает «инвертировать все биты в X»):
Смещение двоичного
Двоичное значение | Интерпретация Excess-128 | Неподписанная интерпретация |
---|---|---|
00000000 | −128 | 0 |
00000001 | −127 | 1 |
⋮ | ⋮ | ⋮ |
01111111 | −1 | 127 |
10000000 | 0 | 128 |
10000001 | 1 | 129 |
⋮ | ⋮ | ⋮ |
11111111 | +127 | 255 |
База −2
Диапазон чисел, которые могут быть представлены, асимметричен. Если слово имеет четное число битов, величина наибольшего отрицательного числа, которое может быть представлено, вдвое больше, чем наибольшее положительное число, которое может быть представлено, и наоборот, если слово имеет нечетное число битов.
Сравнительная таблица
В следующей таблице показаны положительные и отрицательные целые числа, которые могут быть представлены с помощью четырех битов.
Десятичный | Без подписи | Знак и величина | Дополнение | Два дополнения | Превышение-8 (необъективно) | База −2 |
---|---|---|---|---|---|---|
+16 | N / A | N / A | N / A | N / A | N / A | N / A |
+15 | 1111 | N / A | N / A | N / A | N / A | N / A |
+14 | 1110 | N / A | N / A | N / A | N / A | N / A |
+13 | 1101 | N / A | N / A | N / A | N / A | N / A |
+12 | 1100 | N / A | N / A | N / A | N / A | N / A |
+11 | 1011 | N / A | N / A | N / A | N / A | N / A |
+10 | 1010 | N / A | N / A | N / A | N / A | N / A |
+9 | 1001 | N / A | N / A | N / A | N / A | N / A |
+8 | 1000 | N / A | N / A | N / A | N / A | N / A |
+7 | 0111 | 0111 | 0111 | 0111 | 1111 | N / A |
+6 | 0110 | 0110 | 0110 | 0110 | 1110 | N / A |
+5 | 0101 | 0101 | 0101 | 0101 | 1101 | 0101 |
+4 | 0100 | 0100 | 0100 | 0100 | 1100 | 0100 |
+3 | 0011 | 0011 | 0011 | 0011 | 1011 | 0111 |
+2 | 0010 | 0010 | 0010 | 0010 | 1010 | 0110 |
+1 | 0001 | 0001 | 0001 | 0001 | 1001 | 0001 |
+0 | 0000 | 0000 | 0000 | 0000 | 1000 | 0000 |
−0 | 1000 | 1111 | ||||
−1 | N / A | 1001 | 1110 | 1111 | 0111 | 0011 |
−2 | N / A | 1010 | 1101 | 1110 | 0110 | 0010 |
−3 | N / A | 1011 | 1100 | 1101 | 0101 | 1101 |
−4 | N / A | 1100 | 1011 | 1100 | 0100 | 1100 |
−5 | N / A | 1101 | 1010 | 1011 | 0011 | 1111 |
−6 | N / A | 1110 | 1001 | 1010 | 0010 | 1110 |
−7 | N / A | 1111 | 1000 | 1001 | 0001 | 1001 |
−8 | N / A | N / A | N / A | 1000 | 0000 | 1000 |
−9 | N / A | N / A | N / A | N / A | N / A | 1011 |
−10 | N / A | N / A | N / A | N / A | N / A | 1010 |
−11 | N / A | N / A | N / A | N / A | N / A | N / A |
Та же таблица, если смотреть на это «учитывая эти двоичные биты, какое число интерпретируется системой представления»:
Двоичный | Без подписи | Знак и величина | Дополнение | Два дополнения | Превышение-8 | База −2 |
---|---|---|---|---|---|---|
0000 | 0 | 0 | 0 | 0 | −8 | 0 |
0001 | 1 | 1 | 1 | 1 | −7 | 1 |
0010 | 2 | 2 | 2 | 2 | −6 | −2 |
0011 | 3 | 3 | 3 | 3 | −5 | −1 |
0100 | 4 | 4 | 4 | 4 | −4 | 4 |
0101 | 5 | 5 | 5 | 5 | −3 | 5 |
0110 | 6 | 6 | 6 | 6 | −2 | 2 |
0111 | 7 | 7 | 7 | 7 | −1 | 3 |
1000 | 8 | −0 | −7 | −8 | 0 | −8 |
1001 | 9 | −1 | −6 | −7 | 1 | −7 |
1010 | 10 | −2 | −5 | −6 | 2 | −10 |
1011 | 11 | −3 | −4 | −5 | 3 | −9 |
1100 | 12 | −4 | −3 | −4 | 4 | −4 |
1101 | 13 | −5 | −2 | −3 | 5 | −3 |
1110 | 14 | −6 | −1 | −2 | 6 | −6 |
1111 | 15 | −7 | −0 | −1 | 7 | −5 |
Другие системы
Аналогичный метод используется в стандартах сжатия видео H.264 / MPEG-4 AVC и H.265 High Efficiency Video Coding для расширения экспоненциального кодирования Голомба до отрицательных чисел. В этом расширении младший бит является почти знаковым; ноль имеет тот же самый младший бит (0), что и все отрицательные числа. Этот выбор приводит к тому, что представимое положительное число наибольшей величины на единицу больше отрицательного числа наибольшей величины, в отличие от дополнения до двух или зигзагообразного кодирования буферов протокола.