Для расчёта информационного объёма растрового графического изображения (V) используем формулу: V = i * k, где i – глубина цвета - количество битов, требуемое для кодирования цвета пикселя; k – это количество этих пикселей (точек) в изображении, определяющееся разрешающей соответствующего устройства компьютера, в данном случае – сканера.
Разрешающая сканера – 256 (28) точек на дюйм. 1 дюйм = 2,54 см.
Переведём см в дюймы: 12,7/2,54 = 5 д.; 10,16/2,54 = 4 д.
Находим количество пикселей (k), умножая и горизонталь, и вертикаль на разрешающую сканера: 5 * 256 * 4 * 256
Чтобы не пользоваться калькулятором, представим все возможные множители в степенях числа 2: 5 * 2⁸ * 2² * 2⁸ = 5 * 2¹⁸ (пикселей)
Для расчёта информационного объёма растрового графического изображения (V) используем формулу: V = i * k, где i – глубина цвета - количество битов, требуемое для кодирования цвета пикселя; k – это количество этих пикселей (точек) в изображении, определяющееся разрешающей соответствующего устройства компьютера, в данном случае – сканера.
Разрешающая сканера – 256 (28) точек на дюйм. 1 дюйм = 2,54 см.
Переведём см в дюймы: 12,7/2,54 = 5 д.; 10,16/2,54 = 4 д.
Находим количество пикселей (k), умножая и горизонталь, и вертикаль на разрешающую сканера: 5 * 256 * 4 * 256
Чтобы не пользоваться калькулятором, представим все возможные множители в степенях числа 2: 5 * 2⁸ * 2² * 2⁸ = 5 * 2¹⁸ (пикселей)
i = 16 = 2⁴ бит (глубина цвета)
Помним, что 1 байт = 8 бит = 2³ бит; 1 Кбайт = 1024 байта = 2¹⁰ байт = 2¹³ бит; 1 Мбайт = 1024 Кбайта = 2¹⁰ Кбайт = 2²⁰ байт = 2²³ бит
Считаем V или I, кто как пишет:
V = 2⁴ * 5 * 2¹⁸ = 5 *2²² бит/2²³ = 5 * 2⁻¹ Мбайт = 5 * 0,5 = 2,5 Мбайт (ответ)
public class MyClass {
public static void main(String args[]) {
int dimention1 = 10;
int dimention2 = 5;//40
double[][] matrix = new double[dimention1][dimention2];
fill(matrix);
print(matrix);
matrix = sort(matrix, getOrder(matrix));
print(matrix);
}
private static double[][] sort(double[][]matrix, int[] order)
{
double[][] ret = new double[matrix.length][matrix[0].length];
for (int i=0;i<matrix.length;i++ )
{
for (int j=0;j<matrix[i].length;j++ )
{
ret[i][j] = matrix[order[i]][j];
}
}
return ret;
}
private static void fill(double[][] matrix)
{
for (int i=0;i<matrix.length;i++ )
{
for (int j=0;j<matrix[i].length;j++ )
{
matrix[i][j] = Math.random()*10;
}
}
}
private static int[] getOrder(double[][] matrix)
{
double[] sums = new double[matrix.length];
for (int i=0;i<matrix.length;i++ )
{
for (int j=0;j<matrix[i].length;j++ )
{
sums[i]+=matrix[i][j];
}
}
int[] order = new int[sums.length];
for (int i=0;i<sums.length;i++ )
{
order[i] = i;
}
for (int i=0;i<sums.length;i++ )
{
for (int j=i+1;j<sums.length;j++ )
{
if(sums[i]<sums[j])
{
double tmp1 = sums[i];
int tmp2 = order[i];
sums[i] = sums[j];
order[i] = order[j];
sums[j] = tmp1;
order[j] = tmp2;
}
}
}
return order;
}
private static void print(double[][] matrix )
{
for (int i=0;i<matrix.length;i++ )
{
double sum = 0.0;
for (int j=0;j<matrix[i].length;j++ )
{
System.out.print(matrix[i][j]+" ");
sum+=matrix[i][j];
}
System.out.println(" sum: "+sum);
}
System.out.println();
}
}