Будем выполнять деление числа на основание той системы, в которую будем переводить. Причем, деление с остатком делаем. А частное опять также делим и т.д пока в частном ноль не получим: 37=2*18+1 18=2*9+0 9=2*4+1 4=2*2+0 2=2*1+0 1=2*0+1 А теперь остатки снизу вверх переписываем, это и будет число в требуемой системе 37(10) = 100101(2) Проверка. В числе 100101 нумеруем разряды, начиная с 0, но идем справа налево: число:100101 разряд: 543210 Номер разряда означает показатель основания. Составляем выражение: ответ сошелся. ----------------------------- Действуем аналогично: 94=2*47+0 47=2*23+1 23=2*11+1 11=2*5+1 5=2*2+1 2=2*1+0 1=2*0+1 Проверка: 1011110 6543210 Сошлось ---------------------------------------- 64=8*8+0 8=8*1+0 1=8*0+1 Проверка: 100 210 Сошлось
1. Как я понял, нужно перевести 297(10) в ...(2),...(8) и ...(16). Тогда: - 10-ная : 297; - 2-ная : 100101001; - 8-ная : 451; - 16-ная : 129.
2.Как я понял нужно показать как перевести 100101001(2-ная) в 8-ная через триады. Тогда : 100 101 001 1) 100 = 2^2 = 4; 2) 101 = 2^2 + 2^0 = 4 + 1 = 5; 3) 001 = 2^0 = 1; Тогда 100101001 (2-ная) = 451(8-ная).
3. 16 = 2^4 = 10000(2-ная); 32 = 2^5 = 100000(2-ная); 64 = 2^6 = 1000000(2-ная); 128 = 2^7 = 10000000(2-ная). Выведем правило : Если мы переводим в двоичную СС числа, являющиеся степенями двойки, то мы ставим везде ноли, но единицу ставим в том разряде двоичного числа, в который мы возвели двойку, чтобы получить 8;16 и т.п(32 - это 5-ая степень двойки, следовательно мы ставим единицу на 5-ый разряд, а в другие разряды ставим нули : 100000(1 на 5 разряде).
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrFill(50,1); a.Println
end.
Замечание: полученный массив имеет 50 элементов, но индексы [0..49]
2. "Школьный вариант"
var
a:array[1..50] of integer;
i:integer;
begin
for i:=1 to 50 do begin
a[i]:=1;
Write(a[i]:2)
end;
Writeln
end.