Рассчитайте объём видеопамяти, необходимой для хранения графического изображения, занимающего весь экран монитора с разрешением 1024 х 768 и количеством отображаемых цветов, равным 16 777 216.
// PascalABC.NET 3.0, сборка 1157 от 02.02.2016 begin var n:=ReadInteger('n='); if n<0 then Writeln(n,'! не определено: n<0') else if n=0 then Writeln('0!=1') else begin var p:BigInteger:=1; for var i:=2 to n do p*=i; Writeln(n,'!=',p) end end.
Однобайтовый формат это восьмиразрядная сетка. Ну, потому что 1 байт - 8 бит. А 1 бит - 1 разряд Переведем число 86 в двоичную систему счисления и получим: 01010110 Теперь число -68: 01000100
А сейчас самое интересное - нужно прицепить минус. Сразу в дополнительном коде мы не представим число. Сначала нужно перевести его в обратный. Для этого нужно просто заменить все НУЛИ на ЕДИНИЦЫ, а ЕДИНИЦЫ на НУЛИ: 01000100 = 10111011
Вот теперь это число можно представить в дополнительном коде. Нужно всего лишь прибавить в конце единицу (прибавить именно операцией сложения, а не просто дописать):
begin
var n:=ReadInteger('n=');
if n<0 then Writeln(n,'! не определено: n<0')
else
if n=0 then Writeln('0!=1')
else begin
var p:BigInteger:=1;
for var i:=2 to n do p*=i;
Writeln(n,'!=',p)
end
end.
Тестовое решение:
n= 138
138!=691778647261948849222819828311491035886734385827028118707676848307166514238979223884785249055995983385450621636277440066920043595627074569065446040152660143904127838730788278294186615891819670506731208704000000000000000000000000000000000
Переведем число 86 в двоичную систему счисления и получим:
01010110
Теперь число -68:
01000100
А сейчас самое интересное - нужно прицепить минус. Сразу в дополнительном коде мы не представим число. Сначала нужно перевести его в обратный. Для этого нужно просто заменить все НУЛИ на ЕДИНИЦЫ, а ЕДИНИЦЫ на НУЛИ:
01000100
=
10111011
Вот теперь это число можно представить в дополнительном коде. Нужно всего лишь прибавить в конце единицу (прибавить именно операцией сложения, а не просто дописать):
10111011
+
1
10111100
ответ:
86: 01010110
-68: 10111100