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

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

Поскольку десятичные числа активно используются человеком, а двоичные — компьютером, этой проблемой в применении к двоичной и десятичной системам однажды уже озаботились какие-то светлые умы и придумали двоично-десятичное кодирование (binary coded decimal, BCD). Суть идеи проста — берем и для каждой десятичной цифры заводим байт. И в этом байте тупо пишем значение десятичной цифры в двоичном коде. Тогда число, например, 0.8 будет 0.00001000. Потом, правда, подумали еще, и решили, что раз уж верхняя часть байта всегда пустует (так как максимум 9 — это 1001), то давайте для каждой десятичной цифры заводить полубайт. И назвали это упакованным двоично-десятичным кодированием (packed BCD).
В упакованном кодировании наше 0.8 будет 0.1000, а какое-нибудь 6.75 будет 0110.01110101.

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

Ну и небольшой калькулятор по этому поводу — вводим либо десятичное число, либо двоичное, подразумевая, что это упакованный двоично-десятичный код, и получаем результат. Понятно, что все преобразования можно проделать и в уме, и в этом ее преимущество; но зачем же лишний раз мозги напрягать, верно?

Двои́чный код — это способ представления данных в виде кода, в котором каждый разряд принимает одно из двух возможных значений, обычно обозначаемых цифрами 0 и 1. Разряд в этом случае называется двоичным разрядом.

В случае обозначения цифрами «0» и «1», возможные состояния двоичного разряда наделяются качественным соотношением «1» > «0» и количественными значениями чисел «0» и «1».

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

Содержание

Описание [ править | править код ]

Из комбинаторики известно, что, в случае непозиционного кода, количество комбинаций (кодов) n-разрядного кода является числом сочетаний с повторениями, равно биномиальному коэффициенту:

( n + k − 1 k ) = ( − 1 ) k ( − n k ) = ( n + k − 1 ) ! k ! ( n − 1 ) ! <displaystyle =(-1)^<-n choose k>=<frac <left(n+k-1
ight)!>>> , [возможных состояний (кодов)], где:

( n + k − 1 ) ! k ! ( n − 1 ) ! = ( 2 + k − 1 ) ! k ! ( 2 − 1 ) ! = ( k + 1 ) ! k ! 1 ! = k + 1 <displaystyle <frac <left(n+k-1
ight)!>>=<frac <left(2+k-1
ight)!>>=<frac <left(k+1
ight)!>>=k+1> , [возможных состояний (кодов)], то есть

N k p ( k ) = k + 1 <displaystyle N_(k)=k+1> , [возможных состояний (кодов)], где

N k p ( k ) = k + 1 = 8 + 1 = 9 <displaystyle N_(k)=k+1=8+1=9> , [возможных состояний (кодов)].

В случае позиционного кода, число комбинаций (кодов) k-разрядного двоичного кода равно числу размещений с повторениями:

N p ( k ) = A ¯ ( 2 , k ) = A ¯ 2 k = 2 k <displaystyle N_

(k)=<ar >(2,k)=<ar >_<2>^=2^> , где

Используя два двоичных разряда можно закодировать четыре различные комбинации: 00 01 10 11, три двоичных разряда — восемь: 000 001 010 011 100 101 110 111, и так далее.
При увеличении разрядности позиционного двоичного кода на 1, количество различных комбинаций в позиционном двоичном коде удваивается.

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

В системах счисления k-разрядный двоичный код, (k-1)-разрядный двоичный код, (k-2)-разрядный двоичный код и т. д. могут отображать одно и то же число. Например, 0001, 001, 01, 1 — одно и то же число — «1» в двоичных кодах с разным числом разрядов — k.

Примеры двоичных чисел [ править | править код ]

В таблице показаны первые 16 двоичных чисел и их соответствие десятичным и шестнадцатиричным числам.

Десятичное числоШестнадцатеричное числоДвоичное число
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111

Пример «доисторического» использования кодов [ править | править код ]

Инки имели свою счётную систему кипу, которая физически представляла собой верёвочные сплетения и узелки. Генри Эртан обнаружил, что в узелках заложен некий код, более всего похожий на двоичную систему счисления [1] .

На данном уроке будет рассмотрена тема «Кодирование информации. Двоичное кодирование. Единицы измерения информации». В ходе него пользователи смогут получить представление о кодировании информации, способах восприятия информации компьютеров, единицах ее измерения и двоичном кодировании.

Тема: Информация вокруг нас

Урок: Кодирование информации. Двоичное кодирование. Единицы измерения информации

1. Введение

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

1. Кодирование как изменение формы представления информации.

2. Как компьютер распознает информацию?

3. Как измерить информацию?

4. Единицы измерения информации.

В мире кодов

Зачем люди кодируют информацию?

1. Скрыть ее от других (зеркальная тайнопись Леонардо да Винчи, военные шифровки).

2. Записать информацию короче (стенография, аббревиатура, дорожные знаки).

3. Для более легкой обработки и передачи (азбука Морзе, перевод в электрические сигналы — машинные коды).

Кодирование — это представление информации с помощью некоторого кода.

Код — это система условных знаков для представления информации.

Способы кодирования информации

1. Графический (см. Рис. 1) (с помощью рисунков и знаков).

Рис. 1. Система сигнальных флагов (Источник)

2. Числовой (с помощью чисел).

Например: 11001111 11100101.

3. Символьный (с помощью символов алфавита).

Например: НКМБМ ЧГЁУ.

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

Средством кодирования и декодирования служит кодовая таблица соответствия. Например, соответствие в различных системах счисления — 24 — XXIV, соответствие алфавита каким-либо символам (Рис. 2).

Рис. 2. Пример шифра (Источник)

Примеры кодирования информации

Примером кодирования информации является азбука Морзе (см. Рис. 3).

Рис. 3. Азбука Морзе (Источник)

В азбуке Морзе используется всего 2 символа — точка и тире (короткий и длинный звук).

Еще одним примером кодирования информации является флажковая азбука (см. Рис. 4).

Рис. 4. Флажковая азбука (Источник)

Также примером является азбука флагов (см. Рис. 5).

Рис. 5. Азбука флагов (Источник)

Всем известный пример кодирования — нотная азбука (см. Рис. 6).

Рис. 6. Нотная азбука (Источник)

Рассмотрим следующую задачу:

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

Старший помощник Лом сдает экзамен капитану Врунгелю. Помогите ему прочитать следующий текст (см. Рис. 8):

2. Кодирование информации

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

Кодирование — это операция преобразования знаков или групп знаков одной знаковой системы в знаки или группы знаков другой знаковой системы.

Примером может служить язык жестов (см. Рис. 9).

Рис. 9. Азбука жестов (Источник)

3. Сигналы

Вокруг нас существуют преимущественно два сигнала, например:

— Светофор: красный — зеленый;

— Лампа: горит — не горит;

Всё это сигналы, обозначающие количество информации в 1 бит.

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

4. Распознавание информации компьютером

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

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

Это электрические сигналы: проходит ток или не проходит ток.

Машинный двоичный язык — последовательность "0" и "1". Каждое двоичное число может принимать значение 0 или 1.

Каждая цифра машинного двоичного кода несет количество информации, равное 1 бит.

Проводят электрический ток

Не проводят электрический ток

Участок поверхности магнитного носителя (жесткий диск, дискета)

Участок поверхности лазерного диска

Не отражает луч

5. Бит и байт

Двоичное число, которое представляет наименьшую единицу информации, называется бит. Бит может принимать значение либо 0, либо 1. Наличие магнитного или электронного сигнала в компьютере означает 1, отсутствие 0.

Строка из 8 битов называется байт. Эту строку компьютер обрабатывает как отдельный символ (число, букву).

Рассмотрим пример. Слово ALICE состоит из 5 букв, каждая из которых на языке компьютера представлена одним байтом (см. Рис. 10). Стало быть, Alice можно измерить как 5 байт.

Рис. 10. Двоичный код (Источник)

6. Единицы измерения информации

Кроме бита и байта, существуют и другие единицы измерения информации.