Постараюсь обьяснить 0 00 1 01 2 10 3 11 4 100 Обратите внимание, что в разряде справа чередуются нули и единицы через строку, Во втором разряде справа чередование через две строки. Далее по разрядно будет чередование через 4,8,16.. Все очень похоже на десятичную систему, где "нехватка" символа при добавлении единички вызывает обнуление в этом разряде и перенос единицы в старший (левый) разряд
Организация двоичной системы исчисления такая же как и десятичной с одним лишь исключением: в десятичной 10 цифр (от 0 до 9), а в двоичной всего две цифры (0 и 1). При переходе из младшего разряда в соседний старший разряд в десятичной системе происходит умножение на 10, а в двоичной системе - умножение на 2. То есть например: 123 в десятичной = 1*100 + 2*10 + 3*1, а в двоичной, например 101 = 1*(2*2) + 0*2 + 1*1 = 4+1=5, то есть 101(в двоичной) = 5 (в десятичной). Для числа три, 3 = 2 + 1 = 1*2 + 1 = (11)(в двоичной). В приложении файл изображения, там табличка соответствия первых натуральных чисел в десятичной и двоичной системе.
var x: array[1..n] of integer; i, min, max: integer;
begin Randomize; Writeln('Элементы массива'); min := 32767; max := -32768; for i := 1 to n do begin x[i] := Random(101) - 50; Write(x[i]:4); if (x[i] > 0) and (min > x[i]) then min := x[i] else if (x[i] < 0) and (max < x[i]) then max := x[i] end; Writeln; Writeln('Min=', min, ', max=', max) end.
var x: array[1..n] of integer; i, max, max1: integer;
begin Randomize; Writeln('Элементы массива'); max := -32768; max1 := max; for i := 1 to n do begin x[i] := Random(100); Write(x[i]:3); if max < x[i] then begin max1 := max; max := x[i] end else if max1 < x[i] then max1 := x[i] end; Writeln; Writeln('Второй максимум равен ', max1) end.
float average(int* a, int first, int last) { int s = 0; for(int i = first; i <= last; ++i) s += a[i]; return s * 1. / (last - first + 1); } int min_i(int* a, int n) { int m = a[0]; int numb = 0; for(int i = 1; i < n; ++i) if(m > a[i]) { m = a[i]; numb = i; } return numb; } int max_i(int* a, int n) { int m = a[0]; int numb = 0; for(int i = 1; i < n; ++i) if(m < a[i]) { m = a[i]; numb = i; } return numb; } int main() { int N; std::cin >> N; int X[N]; for(int i = 0; i < N; ++i) std::cin >> X[i]; std::cout << "Average of whole array: " << average(X, 0, N - 1) << std::endl; int first = min_i(X, N); int last = max_i(X, N); if(first > last) { int temp = first; first = last; last = temp; } if(last - first == 0 || last - first == 1) std::cout << "Average of shorter array: " << average(X, 0, N - 1) << std::endl; else { int delta = last - first; for(int i = last; i < N; ++i) X[i - delta + 1] = X[i]; std::cout << "Average of shorter array: " << average(X, 0, N - delta) << std::endl; } }
0 00
1 01
2 10
3 11
4 100
Обратите внимание, что в разряде справа чередуются нули и единицы через строку, Во втором разряде справа чередование через две строки. Далее по разрядно будет чередование через 4,8,16..
Все очень похоже на десятичную систему, где "нехватка" символа при добавлении единички вызывает обнуление в этом разряде и перенос единицы в старший (левый) разряд