Выполнить задачу в Pascal ABC: Дан одномерный массив из N чисел, заполненных случайно в диапазоне от 0 до 50 (рандомно). Найти сумму и произведение этих чисел.
Сначала числа преобразуются в двоичный код. А=-5(10)=-101(2) В=-8,25(10)=-1000,01(2) Числа в формате с фиксированной запятой в памяти хранятся таким образом, что позиция запятой известна и неизменна для всех чисел (отсюда и название с фиксированной точкой) . Для этого число А должно быть представлено в виде -101,00(2) Пусть для хранения используется 8 разрядов. Тогда числа в прямом коде будут представлены в виде А: 1.00101,00 В: 1.01000,01 - здесь отделённый точкой старший разряд знаковый, 1 - означает минус. Обратный код получается инверсией всех разрядов, кроме знаковых. А: 1.11010,11 В: 1.10111,10 Теперь нужно получить дополнительный код. Но перед этим нужно иметь в виду, что ни запятые, ни точки в памяти не хранятся, но всегда известно, где знаковый разряд и сколько разрядов в дробной части. Поэтому А: 11101011 + 1 = 11101100 В: 11011110 + 1 = 11011111 Это и есть внутреннее представление заданных чисел в дополнительном коде. Сложение и вычитание чисел с фиксированной точкой производится так же, как и для целых чисел. 11101100 + 11011111
111001011 - старший разряд (№8) будет выдавлен из разрядной сетки и в данном случае просто отброшен. Результат операции сложения 11001011. Теперь можно преобразовать получившееся число в привычный десятичный вид и проверить результат. 1.1001011 1.0110100 - обратный код 1.0110100 + 1 = 1.0110101 - прямой код. Возвращаем запятую на место 1.01101,01 -> -(8+4+1+1/4) В десятичном виде это число -13,25 Сложение было выполнено правильно.
вот как то так
Объяснение:
если нужно объяснить- пиши в лс
т.к. не указанно сколько элементов в массиве, я взял случайное число