Двоичная система счисления — это позиционная система счисления с целочисленным основанием 2. В этой системе счисления числа записываются с помощью двух символов (в роли которых обычно выступают цифры 0 и 1).
Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите её в соответствии с правилами написания статей.
|
Двоичная система счисления — это позиционная система счисления с целочисленным основанием 2. В этой системе счисления числа записываются с помощью двух символов (в роли которых обычно выступают цифры 0 и 1).
История[]
Полный набор из 8 триграмм и 64 гексаграмм, аналог 3-битных и 4-битных цифр, был известен в древнем Китае в классических текстах книги Перемен. Порядок гексаграмм в книге Перемен, расположенных в соответствии со значениями соответствующих двоичных цифр (от 0 до 63), и метод их получения был разработан китайским учёным и философом Шао Юн в XI веке. Однако нет доказательств, свидетельствующих о том, что Шао Юн понимал правила двоичной арифметики, располагая двухсимвольные кортежи в лексикографическом порядке.
Индийский математик Пингала (200 год до н. э.) разработал математические основы для описания поэзии с использованием первого известного применения двоичной системы счисления.[1][2]
Наборы, представляющие собой комбинации двоичных цифр, использовались африканцами в традиционных гаданиях (таких как Ифа) наряду со средневековой геомантией.
В 1605 году Френсис Бэкон описал систему, буквы алфавита которой могут быть сведены к последовательностям двоичных цифр, которые в свою очередь могут быть закодированы как едва заметные изменения шрифта в любых случайных текстах. Важным шагом в становлении общей теории двоичного кодирования является замечание о том, что указанный метод может быть использован применительно к любым объектам.[3] (См. Шифр Бэкона)
Современная двоичная система была полностью описана Лейбницом в XVII веке в работе Explication de l’Arithmétique Binaire[4]. В системе счисления Лейбница были использованы цифры 0 и 1, как и в современной двоичной системе. Как человек, увлекающийся китайской культурой, Лейбниц знал о книге Перемен и заметил, что гексаграммы соответствуют двоичным числам от 0 до 111111. Он восхищался тем, что это отображение является свидетельством крупных китайских достижений в философской математике того времени.[5]
В 1854 английский математик Джордж Буль опубликовал знаковую работу, описывающую алгебраические системы применительно к логике, которая в настоящее время известна как Булева алгебра или алгебра логики. Его логическому исчислению было суждено сыграть важную роль в разработке современных цифровых электронных схем.
В 1937 Клод Шеннон предствил к защите кандидатскую диссертацию Символический анализ релейных и переключательных схем в MIT, в которой булева алгебра и двоичная арифметика были использованы применительно к электронным реле и переключателям. На диссертации Шеннона по существу основана вся современная цифровая техника.
В ноябре 1937 Джордж Штибиц, впоследствии работавший в Bell Labs, создал на базе реле компьютер «Model K» (от англ. «Kitchen», кухня, где производилась сборка), который выполнял двоичное сложение. В конце 1938 Bell Labs развернула исследовательскую программу во главе со Штибицом. Созданный под его руководством компьютер, завершённый 8 января 1940, умел выполнять операции с комплексными числами. Во время демонстрации на конференции American Mathematical Society в Дармутском колледже 11 сентября 1940 Штибиц продемонстрировал возможность посылки команд удалённому калькулятору комплексных чисел по телефонной линии с использованием телетайпа. Это была первая попытка использования удалённой вычислительной машины посредством телефонной линии. Среди участников конференции, бывших свидетелями демонстрации, были Джон фон Нейман, Джон Мокли и Норберт Винер, впоследствии писавшие об этом в своих мемуарах.
Таблицы умножения и сложения двоичных чисел[]
× | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
соответствует булевой функции f(2,1,8)10,
+ | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 10 |
соответствует булевой функции f(2,2,134)10.
Преобразование чисел[]
Для преобразования из двоичной системы в десятичную используют следующую таблицу степеней основания 2:
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Начиная с цифры 1 все цифры умножаются на два. Точка, которая стоит после 1 называется двоичной точкой.
Преобразование двоичных чисел в десятичные[]
Допустим, вам дано двоичное число 110001. Для перевода в десятичное просто запишите его справа налево как сумму по разрядам следующим образом:
Можно записать это в виде таблицы следующим образом:
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 0 | 0 | 1 | ||||
+32 | +16 | +1 |
Точно так же, начиная с двоичной точки, двигайтесь справа налево. Под каждой двоичной единицей напишите её эквивалент в строчке ниже. Сложите получившиеся десятичные числа.
Таким образом, двоичное число 110001 равнозначно десятичному 49.
Преобразование методом Горнера[]
Для того, что бы преобразовывать числа из двоичной в десятичную систему данным методом, надо суммировать цифры слева-направо, умножая ранее полученный результат на основу системы (в данном случае 2). Например, двоичное число 1011011 переводится в десятичную систему так:
0*2+1=1 >> 1*2+0=2 >> 2*2+1=5 >> 5*2+1=11 >> 11*2+0=22 >> 22*2+1=45 >> 45*2+1=91
То есть в десятичной системе это число будет записано как 91.
Или число 101111 переводится в десятичную систему так:
0*2+1=1 >> 1*2+0=2 >> 2*2+1=5 >> 5*2+1=11 >> 11*2+1=23 >> 23*2+1=47
То есть в десятичной системе это число будет записано как 47.
Преобразование десятичных чисел к ближайшей степени двойки, не меньшей этого числа[]
Ниже приведена функция, возвращающая число, не меньшее аргумента, и являющееся степенью двух.
unsigned int to_deg_2(unsigned int number) {
--number;
for(int i = 1; i < sizeof(unsigned int) * 8; i *= 2) {
number |= (number >> i);
}
return number + 1;
}
Преобразование десятичных чисел в двоичные[]
Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой :
19 /2 = 9 с остатком 1 9 /2 = 4 c остатком 1 4 /2 = 2 с остатком 0 2 /2 = 1 с остатком 0 1 /2 = 0 с остатком 1
Итак, мы делим каждое частное на 2 и записываем в остаток 1 или 0. Продолжать деление надо пока в делимом не будет 1. Ставим числа из остатка друг за другом, начиная с конца. В результате получаем число 19 в двоичной записи (начиная с конца): 10011.
Программная реализация перевода (Borland Delphi 7): Используется метод деления с остатком.
var tek: integer; //Десятичное число function DecToBin:string; var ik:integer; ost: array [1..100] of integer; ed:string; begin ed:=''; for ik:=1 to 100 do ost[ik]:=0; ik:=1; tek:=StrToInt(pr); while tek>0 do begin ost[ik]:= tek mod 2; tek:=tek div 2; ik:=ik+1; end; while ik>0 do begin ed:=ed+intToStr(ost[ik]); ik:=ik-1; end; dectobin:=ed; end;
См. также Деление с остатком (деление по модулю)
Двоичные показательные позиционные системы счисления с основанием показательной функции не равной 2[]
Являются целочисленными сдвоенными показательными системами счисления.
Целые числа записываются в виде:
, где:
b>2 — основание показательной межразрядной функции.
Дробные числа записываются в виде:
, где:
m — число цифр дробной части числа x2,b.
Сравнение с другими системами счисления[]
Сравнение различных показательных систем счисления по одному параметру — удельное натуральнологарифмическое число представимых чисел приводится в статье «Число представимых чисел в позиционных системах счисления».
Применения[]
В цифровых устройствах[]
Двоичная система используется в цифровых устройствах, поскольку является наиболее простой и соответствует требованиям:
- Чем меньше значений существует в системе, тем проще изготовить отдельные элементы, оперирующие этими значениями. В частности, две цифры двоичной системы счисления могут быть легко представлены многими физическими явлениями: есть ток — нет тока, индукция магнитного поля больше пороговой величины или нет и т. д.
- Чем меньше количество состояний у элемента, тем выше помехоустойчивость и тем быстрее он может работать. Например, чтобы закодировать три состояния через величину индукции магнитного поля, потребуется ввести два пороговых значения, что не будет способствовать помехоустойчивости и надёжности хранения информации.
- Двоичная арифметика является довольно простой. Простыми являются таблицы сложения и умножения — основных действий над числами.
В цифровой электронике одному двоичному разряду в двоичной системе счисления соответствует один двоичный разряд двоичного регистра, то есть двоичный триггер с двумя состояниями (0,1).
В английской системе мер[]
При указании линейных размеров в дюймах по традиции используют двоичные дроби, а не десятичные, например: 5¾″, 715/16″, 311/32″ и т. д.
См. также[]
- Битовые операции
- Системы счисления
- Бит
- Байт
- Единицы измерения информации
- Двоичные логические элементы
- Двоичный триггер
- Двоично-десятичный код
- Десятичная система счисления
- Комбинированные системы счисления
- Двоичное кодирование
Примечания[]
- ↑ Sanchez, Julio & Canton, Maria P. (2007), Microcontroller programming : the microchip PIC, Boca Raton, Florida: CRC Press, p. 37, ISBN 0-8493-7189-9
- ↑ W. S. Anglin and J. Lambek, The Heritage of Thales, Springer, 1995, ISBN 0-387-94544-X
- ↑ Bacon, Francis, The Advancement of Learning, vol. 6, London, pp. Chapter 1, <http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html>
- ↑ http://www.leibniz-translations.com/binary.htm Leibniz Translation.com EXPLANATION OF BINARY ARITHMETIC
- ↑ Aiton, Eric J. (1985), Leibniz: A Biography, Taylor & Francis, pp. 245–8, ISBN 0-85274-470-6
Ссылки[]
- Учебное пособие «Арифметические основы ЭВМ и систем». Часть 1. Системы счисления
- Википедия. Двоичная система счисления
Эта страница использует содержимое раздела Википедии на русском языке. Оригинальная статья находится по адресу: Двоичная система счисления. Список первоначальных авторов статьи можно посмотреть в истории правок. Эта статья так же, как и статья, размещённая в Википедии, доступна на условиях CC-BY-SA .