1) Решение по простому. Шестнадцатиричная система это 4 бита на один знак. У нас двоичная запись 10001101. Всего 8 бит. Значит младшие 4 бита это младшее шестнадцатиричное число, а старшие 4 бита это старшее число. Смотрим на первые 4 бита 1101 это 1*+0*+1*+1*=1*1+0*2+1*4+1*8=1+4+8=13(в десятичной)=D (A-10, B-11, C-12, D-13 в 16-ричной).
Смотрим на старшую четверку битов 1000=0*+0*+0*+1*=0+0+0+8=8.
Пишем старшую цифре потом младшую 8D.
2)Теперь решение как нужно делать правильно (для любого основания). 10001101=1*+0*+1*+1*+0*+0*+0*+1*=1*1+0*2+1*4+1*8+0*16+0*32+0*64+1*128=1+4+8+128=141 (это перевели в десятичную). Затем переводим в нужную нам 16-ричную (это основание 16 значит будем делить на 16). 141/16= 8,8125. Мы получили целую часть от деления - цифра 8. Она у нас будет старшей (если при первом делении получилось число больше основания т.е.16 нужно его еще разделить). Умножим 8 на основание и вычтим это число из первоначального. 141-8*16=141-128=13. Мы получили младший разряд. Переводим 13 в 16-ричную (как показал ранее А-10 и т.д.). Получили ответ 8D
Чтобы сравнить эти два числа, нужно их рпедставить в одной системе счисления. Удобней всего сделать это в двоичной. Переведем DD в двоичную систему. пишем раскладку степеней двойки: 1 2 4 8 (16 не берем, т.к. в 16-ричной с.с. нет числа 16) берем первую цифру числа DD - D. По сути, D-это 13 число в 16-ричной с.с. (более подробно 16-ричная с.с - это 1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)); смотрим, как число 13 можно разложить по числам 1,2,4,8(см раскладку степеней двойки). 8 влезает в 13 один раз, ставим 1. Остаток 13-8=5. 4 влезает 5 один раз, ставим 1. остаток 5-4=1. 2 не влезает в 1, ставим 0. И на 1 ставим 1. Т.е. первая четверка двочного числа равна 1101. Теперь разбираем вторую цифру 16-ричного числа D. Выше было рассказано, как это сделать. Итого, получаем, что DD в 16с.с = 11011101 в двоичной. Теперь пеерводим 337 из восьмеричной в двоичную пишем раскладку степеней двойка 1 2 4 (8 не берем, т.к в восьмеричной с.с нет числа 8)ж берем первую цифру числа 337 - это 3. Раскладываем по степеням двойки и получаем, что первая двоичная тройка этого числа равна 011 (4 в 3 не влезает, 2 влезает один раз, остаток-один). со второй тройкой аналогично - получаем 011. Теперь 7: 111 (4 влезает 1 раз, остаток-3, двойка в 3 влезает 1 раз, остаток-1, и последняя единица) Итого получаем 337 в восьмеричной с.с. = 011011111, но 0 в начале числа не пишут, поэтому получаем 11011111 выписываем полученные двоичные числа DD= 11011101 337=11011111 по условию нам нужно найти число, которое стоит между этими. Для себя я делаю так, все 1 заменяю на 9, а 0 - на 8, мне так проще. получается, что DD=99899989 337=99899999 очевидно, что между ними стоит число 99899990 или, переводя обратно, 11011110 - вот и ответ
Program Zadacha; Const n = 10; m = 10; max = 15; Var A: Array [1..n, 1..m] Of Integer; B: Array[1..n] of Integer; C: Array[1..n] of Real; min, sum, count, i, j: Integer; Begin Randomize; For i := 1 To n Do For j := 1 To m Do A[i, j] := Random(max * 2) - max; min := max; For i := 1 To n Do For j := 1 To m Do If A[i, j] < min Then min := A[i, j]; For i := 1 To n Do For j := 1 To m Do If A[i, j] = min Then B[i] := 1; sum := 0; count := 0; For i := 1 To n Do Begin For j := 1 To m Do If (A[i, j] Mod 2 = 0) And (A[i, j] >= 0) Then Begin sum := sum + A[i, j]; count := count + 1; End; C[i] := sum / count; sum := 0;count := 0; End; WriteLn('Массив A:'); For i := 1 To n Do Begin For j := 1 To m Do Write(A[i, j], ' '); WriteLn; End; WriteLn('Массив B:'); For i := 1 To n DoWrite(B[i], ' '); WriteLn; WriteLn('Массив C (среднее арифметиеское положительных четных элементов массива A):'); For i := 1 To n Do Write(C[i]:5:2, ' '); ReadLn; End.
8D
Объяснение:
1) Решение по простому. Шестнадцатиричная система это 4 бита на один знак. У нас двоичная запись 10001101. Всего 8 бит. Значит младшие 4 бита это младшее шестнадцатиричное число, а старшие 4 бита это старшее число. Смотрим на первые 4 бита 1101 это 1*
+0*
+1*
+1*
=1*1+0*2+1*4+1*8=1+4+8=13(в десятичной)=D (A-10, B-11, C-12, D-13 в 16-ричной).
Смотрим на старшую четверку битов 1000=0*
+0*
+0*
+1*
=0+0+0+8=8.
Пишем старшую цифре потом младшую 8D.
2)Теперь решение как нужно делать правильно (для любого основания). 10001101=1*
+0*
+1*
+1*
+0*
+0*
+0*
+1*
=1*1+0*2+1*4+1*8+0*16+0*32+0*64+1*128=1+4+8+128=141 (это перевели в десятичную). Затем переводим в нужную нам 16-ричную (это основание 16 значит будем делить на 16). 141/16= 8,8125. Мы получили целую часть от деления - цифра 8. Она у нас будет старшей (если при первом делении получилось число больше основания т.е.16 нужно его еще разделить). Умножим 8 на основание и вычтим это число из первоначального. 141-8*16=141-128=13. Мы получили младший разряд. Переводим 13 в 16-ричную (как показал ранее А-10 и т.д.). Получили ответ 8D