Virtual Laboratory Wiki
Advertisement

Двоичная система счисления — это позиционная система счисления с целочисленным основанием 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″ и т. д.

См. также[]

Примечания[]

  1. Sanchez, Julio & Canton, Maria P. (2007), Microcontroller programming : the microchip PIC, Boca Raton, Florida: CRC Press, p. 37, ISBN 0-8493-7189-9 
  2. W. S. Anglin and J. Lambek, The Heritage of Thales, Springer, 1995, ISBN 0-387-94544-X
  3. Bacon, Francis, The Advancement of Learning, vol. 6, London, pp. Chapter 1, <http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html> 
  4. http://www.leibniz-translations.com/binary.htm Leibniz Translation.com EXPLANATION OF BINARY ARITHMETIC
  5. Aiton, Eric J. (1985), Leibniz: A Biography, Taylor & Francis, pp. 245–8, ISBN 0-85274-470-6 

Ссылки[]




Эта страница использует содержимое раздела Википедии на русском языке. Оригинальная статья находится по адресу: Двоичная система счисления. Список первоначальных авторов статьи можно посмотреть в истории правок. Эта статья так же, как и статья, размещённая в Википедии, доступна на условиях CC-BY-SA .


Advertisement