Перевести число из десятичной системы счисления в двоичную, я думаю, для большинства читателей не составит труда. Но рассмотреть этот алгоритм подробнее и реализовать его на языке программирования — задача посложнее. В данной статье реализуем перевод числа из десятичной системы счисления в двоичную.
В двух словах, чтобы перевести число в двоичную систему счисления, мы делим данное число на два и выделяем остаток от деления. Затем, если частное от деления меньше делителя (т.е. двух) мы делим его снова на два и снова выделяем остаток. Ответом будет набор остатков от деления, начиная с последнего.
Рассмотрим код:
var a,b,c,i,k:integer; mas: array[0..1000] of integer; begin k:=0; readln(a); repeat b:=a mod 2; k:=k+1; mas[k]:=b; c:=a div 2; if c>=2 then a:=c; until c<2; write(c); for i:=k downto 1 do write(mas[i]); end.
Комментарии:
— используем цикл с постусловием. т.к. нам не известно, сколько раз будет выполняться цикл
— переменная b служит для записи остатков от деления, которые помещаются в массив
mas[k]:=b;
— переменная k для подсчета остатков в массиве
— после выхода из массива выводим последний остаток (переменная с) и остальные остатки, сохраненные в массиве, в обратном порядке
Позднее рассмотрим:
— алгоритм перевода чисел из двоичной системы счисления в десятичную
— перевод из десятичной системы счисления в любую другую (3-ю — 16-ричную)
Не очень понятно зачем делать массив с 0, когда запись в него идет с 1-го элемента
Согласен, рациональнее было бы с 1