Дополнительно к главе 4.3 Задание 1 ГДЗ Семакин 8 класс (Информатика)
1. Введите в компьютер и отладьте программу Numbers 2 10. Переведите с её помощью в десятичную систему счисления следующие двоичные числа: 111110; 1111111; 100000. Проверьте правильность результатов.
program Numbers_2_10;
var
n10, n2, k: longint;
begin
write(‘N2 = ‘);
readln(n2);
k := 1; n10 := 0;
while (n2 < > 0) do
begin
n10 := n10 + (n2 mod 10) * k;
k := k * 2;
n2 := n2 div 10
end;
writeln(‘N10 = ‘, n10)
end.
Программа переводит двоичное число в десятичное поразрядно: берёт последнюю цифру числа, умножает её на текущую степень двойки и прибавляет к результату. Затем число делится на 10, чтобы перейти к следующему разряду.
Проверим перевод данных чисел.
$$111110_2 = 1\cdot 2^5 + 1\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 0\cdot 2^0 = 32+16+8+4+2=62_{10}$$
$$1111111_2 = 1\cdot 2^6 + 1\cdot 2^5 + 1\cdot 2^4 + 1\cdot 2^3 + 1\cdot 2^2 + 1\cdot 2^1 + 1\cdot 2^0 = 64+32+16+8+4+2+1=127_{10}$$
$$100000_2 = 1\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 0\cdot 2^2 + 0\cdot 2^1 + 0\cdot 2^0 = 32_{10}$$
program Numbers_2_10;
var
n10, n2, k: longint;
begin
write(‘N2 = ‘);
readln(n2);
k := 1; n10 := 0;
while (n2 <> 0) do
begin
n10 := n10 + (n2 mod 10) * k;
k := k * 2;
n2 := n2 div 10
end;
writeln(‘N10 = ‘, n10)
end.
Ответ
$$111110_2 = 62_{10},\quad 1111111_2 = 127_{10},\quad 100000_2 = 32_{10}$$