237/2=118 (остаток 1)
118/2=59 (остаток 0)
59/2=29(остаток 1)
29/2=14(остаток1)
14/2=7(остаток 0)
7/2=3(остаток 1)
3/2=1(остаток1)
теперь записываем остаток снизу вверх т.е 1101101 (это и будет число 237)
все остальные числа также:
1015=1111110111
3000=101110111000
55=110111
function decbin(n: int64): int64;
var k,m: int64;
priz: boolean;
begin
k: =1; m: =0;
priz: =true;
repeat
if (n mod 10)> 1 then
begin
writeln('недопустимый ввод - цифра ',n mod 10);
priz: =false;
break;
end;
m: =m+k*(n mod 10);
n: =n div 10;
k: =k*2;
until n=0;
if priz then decbin: =m
else decbin: =-1;
end;
// основная программа
var n,k: int64;
begin
repeat
readln(n);
if n=0 then break
else
begin
k: =decbin(n);
if k> 0 then writeln('десятичное число: ',k);
end;
until false;
end.
1011100011210
недопустимый ввод - цифра 2
11101101
десятичное число: 237
11111111
десятичное число: 255
0
function bintodec(s: string): integer;
var a,d,i: integer;
begin
a: =0;
d: =1;
for i: =length(s) downto 1 do
begin
if s[i]='1' then a: =a+d;
d: =2*d;
end;
bintodec: =a;
end;
var dv: string; fl: boolean; i: integer;
begin
write('введите двоичное число: ');
readln(dv);
while dv< > '0' do
begin
fl: =true;
for i: =1 to length(dv) do
fl: =fl and (dv[i] in ['0','1']);
if fl then writeln(dv,'(2) = ',bintodec(dv),'(10)')
else writeln('ошибка ввода');
write('введите двоичное число: ');
readln(dv);
end;
end.
пример:
введите двоичное число: 123
ошибка ввода
введите двоичное число: 10101
10101(2) = 21(10)
введите двоичное число: 0
Поделитесь своими знаниями, ответьте на вопрос:
Перевести из десятичной системы счисления к двоичной системе счисления: 237, 1015, 3000, 55 p.s п желанию можно подробное решение
237 = 11101101
сначала делим на 2:
237 / 2 = 118(1)(так-как есть остаток)
118 / = 59(0)(так-как нет остатка)
59 / 2 = 29(1)
29 / 2 = 14(1)
14 / 2 = 7(0)
7 / 2 = 3(1)
3 / 2 = 1(1)
1 / 2 = 0(1)
а потом записываем с конца.
с остальными так-же.(но лучше воспользоваться стандарнным windows'ким калькулятором(вид-> программист-> и когда введёшь число выбрать bin : ))