Да, правильно, т.к. в 1 мб 8388608 бит. Делим на 4 и все.
Порядок 20172017 в 2сс = log(20172017) / log(2) = 24.265852010453507 ~= 25
чтоб перевернуть число надо отнять колво единиц равных его порядку
20172017 - (2^25 - 1) = 13382414
Можно конечно заниматься переводами в двоичную
20172017 = "1001100111100110011110001"
"0110011000011001100001110" = 13382414
Смотри вложение, там написан рабочий код.
Если будут вопросы - пиши. Все объясню ;)
А) Если символы равновероятны, то количество информации определяется пл формуле Хартли I = log(2)N = log(2)4 = 2 бита
Б) Если вероятности различны, то используется формула Шеннона I=log(2)(1/p)
I1 = log(2)(1/0,4) ≈ 1,32
I2 = log(2)(1/0,15) ≈ 2,74
I3 = log(2)(1/0,25) = 2
I4 = log(2)(1/0,2) ≈ 2,32
Const n=50;
var a:array [1..n] of integer;
i,k:integer;
begin
for i:=1 to n do begin
a[i]:=random (21)-10;
if a[i]=0 then k:=k+1;
write (a[i]:4);
end;
writeln ('кол-во нулей =',k);
end.