Определить глубину кодирования цвета в изображении и количество цветов в палитре , если информационный объём файла - 1,75 мб , а его разрешение 1200х765.
Дано: I-1.75 МБ К-1200*765 Найти i-? N-? Решение: Переводим 1,75 Мб в биты 1,75*1024*1024*8 I=K*i i=1,75*1024*1024*8/1200/765=16 бит - это глубина цвета N=2¹⁶=65536 цветов в палитре
// PascalABC.NET 3.0, сборка 1128 function Sum(a:array of real):real; begin Result:=0; foreach var x in a do if x>10 then Result+=x end;
procedure Half(a:array of real); begin var s:=Sum(a)/2; for var i:=0 to a.Length-1 do a[i]/=s end;
procedure PrintRealArray(a:array of real); begin foreach var x in a do Write(x:0:3,' '); Writeln end;
begin var n:=ReadInteger('Количество элементов массива:'); var P:=ArrRandomReal(n,0,20); Writeln('Исходный массив'); PrintRealArray(P); Half(P); Writeln('Результирующий массив'); PrintRealArray(P) end.
972₁₀ = 1111001100₂ Минимальное число должно содержать минимальное количество значащих цифр, следовательно нужно найти такие варианты циклического сдвига, когда результат будет начинаться с максимально возможного количества нулей. Сдвиг влево на 4 даст 0011001111, сдвиг еще на 4 даст 0011110011. Запишем оба числа-"претендента" друг под другом и будем поразрядно их сравнивать в направлении слева направо. Меньшим из чисел будет то, в котором при несовпадении разрядов встретится ноль. 0011001111 - меньшее 0011110011 0011001111₂ = 207₁₀
I-1.75 МБ
К-1200*765
Найти
i-?
N-?
Решение:
Переводим 1,75 Мб в биты
1,75*1024*1024*8
I=K*i
i=1,75*1024*1024*8/1200/765=16 бит - это глубина цвета
N=2¹⁶=65536 цветов в палитре