Объяснение:
Задача 1.
Определить объем видеопамяти в килобайтах для графического файла размером 640х480 пикселей и палитрой из 32 цветов.
Найдем сколько бит нужно для хранения значения цвета каждого пикселя. Если палитра составляет 32 цвета то для этого достаточно 2⁵=32 (степень 5, значит 5 бит). Всего у нас 640*480=307200 пикселей, на каждый нужно 5 бит, всего потребуется 307200*5=1536000 бит.
В одном байте 8 бит, значит нам нужно 1536000/8=192000 байт. В килобайте 1024 байта, следовательно для нашего файла нам потребуется объем видеопамяти 192000/1024= 187,5=188 кБ
Задача 2.
После преобразования графического изображения количество цветов уменьшилось с 256 до 32. Во сколько раз уменьшился объем занимаемой им памяти?
Изначально, для хранения 256 цветов требовалось 8 бит для каждого пикселя (2⁸=256). После преобразования, для каждого пикселя количество цветов уменьшилось до 32, и для их хранения нужно всего 5 бит (считали в первой задаче)
Найдем во сколько раз уменьшился объем занимаемой памяти:
8/5=1,6
То есть количество хранимой информации уменьшилось в 1,6 раза, во столько же раз уменьшился и необходимый объем памяти.
ответ: (в начале текст испорчен, непонятно из какой системы перевоить)
36₁₀ = 0*2⁰ + 0*2¹ + 1*2² + 0*2³ + 0*2⁴ + 1*2⁵ = 100100₂
197₁₀ = 5*8⁰ + 0*8¹ + 3*8² = 305₈
681₁₀ = 9*16⁰ + 10*16¹ + 2*16² = 2A9₁₆
100100110101₂ = 1*2⁰ + 0*2¹ + 1*2² + 0*2³ + 1*2⁴ + 1*2⁵ + 0*2⁶ + 0*2⁷ + 1*2⁸ + 0*2⁹ + 0*2¹⁰ + 1*2¹¹ = 2357₁₀
2357₁₀ = 5*8⁰ + 6*8¹ + 4*8² + 4*8³ = 4465₈
1011011₂ = 1*2⁰ + 1*2¹ + 0*2² + 1*2³ + 1*2⁴ + 0*2⁵ + 1*2⁶ = 91₁₀
91₁₀ = 3*8⁰ + 3*8¹ + 1*8² = 133₈
245₈ = 5*8⁰ + 4*8¹ + 2*8² = 165₁₀
165₁₀ = 1*2⁰ + 0*2¹ + 1*2² + 0*2³ + 0*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ = 10100101₂
573₈ = 3*8⁰ + 7*8¹ + 5*8² = 379₁₀
379₁₀ = 1*2⁰ + 1*2¹ + 0*2² + 1*2³ + 1*2⁴ + 1*2⁵ + 1*2⁶ + 0*2⁷ + 1*2⁸ = 101111011₂
1BA7₁₆ = 7*16⁰ + A*16¹ + B*16² + 1*16³ = 7079₁₀
7079₁₀ = 1*2⁰ + 1*2¹ + 1*2² + 0*2³ + 0*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ + 1*2⁸ + 1*2⁹ + 0*2¹⁰ + 1*2¹¹ + 1*2¹² = 1101110100111₂
ACE₁₆ = E*16⁰ + C*16¹ + A*16² = 2766₁₀
2766₁₀ = 0*2⁰ + 1*2¹ + 1*2² + 1*2³ + 0*2⁴ + 0*2⁵ + 1*2⁶ + 1*2⁷ + 0*2⁸ + 1*2⁹ + 0*2¹⁰ + 1*2¹¹ = 101011001110₂
B68₁₆ = 8*16⁰ + 6*16¹ + B*16² = 2920₁₀
2920₁₀ = 0*8⁰ + 5*8¹ + 5*8² + 5*8³ = 5550₈
FE8₁₆ = 8*16⁰ + E*16¹ + F*16² = 4072₁₀
4072₁₀ = 0*8⁰ + 5*8¹ + 7*8² + 7*8³ = 7750₈
655₈ = 5*8⁰ + 5*8¹ + 6*8² = 429₁₀
429₁₀ = 13*16⁰ + 10*16¹ + 1*16² = 1AD₁₆
743₈ = 3*8⁰ + 4*8¹ + 7*8² = 483₁₀
483₁₀ = 3*16⁰ + 14*16¹ + 1*16² = 1E3₁₆
Описание переменных:
str - строка;
len - длина строки;
a - длина очередного слова;
i - текущая позиция в строке.
Алгоритм решения задачи:
Будем перебирать символы строки с конца и измерять количество подряд идущих непробельных символов. Если очередной символ - пробел, то следует вывести на экран отрезок строки от предыдущего с конца символа на длину подряд идущих непробельных символов. Это делается с функции copy(). После того как слово будет выведено, надо обнулить фиксируемую длину слова.
Поскольку вывод слова "срабатывает", только когда встречается пробел, то первое слово строки (последнее из найденных при поиске с конца) выведено не будет, если перед ним нет пробела. Поэтому в программе за циклом предусмотрен отдельный вывод последней найденной подстроки.
Программа на языке Паскаль:
var
str: string;
len, i, a: byte;
begin
readln(str);
len := length(str);
a := 0;
for i:=len downto 1 do begin
if str[i] = ' ' then begin
write(copy(str,i+1,a),' ');
a := 0;
end
else
a := a + 1;
end;
write(copy(str,i,a));
writeln;
end.
Пример работы программы:
11 22 33 44 55
55 44 33 22 11
Объяснение:
но я точно не знаю я старался как мог я искал и нашел кажется