М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
marsel234
marsel234
05.11.2021 01:09 •  Информатика

1. произведите действе в обратном коде - 17 + 22 в 8 разрядном формате. 2. сложите в дополнительном коде - 17 + ( -22 ) в 8 разрядном формате.

👇
Ответ:
pycya2006
pycya2006
05.11.2021
Задание 1.
а) представим -17₁₀ в обратном коде на 8-битном регистре
- запишем число 17₁₀ в двоичной системе: 10001₂
- дополним его слева нулями до 8 знаков: 00010001
- поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110
б) представим 22 в обратном коде на 8-битном регистре
- запишем число 22₁₀ в двоичной системе: 10110₂
- дополним его слева нулями до 8 знаков: 00010110
- поскольку число положительное, его не нужно менять.
в) выполняем сложение
\displaystyle \quad 11101110 \\ +00010110 \\ ------ \\ |1|00000100
Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). В этом случае перенос нужно осуществить в младший разряд, т.е. сложить результат с единицей
и окончательно получим 00000101

Задание 2.
а) представим -17₁₀ в дополнительном коде на 8-битном регистре
- запишем число 17₁₀ в двоичной системе: 10001₂
- дополним его слева нулями до 8 знаков: 00010001
- поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110
- прибавляем единицу в младший разряд: 11101111
б) представим 22 в дополнительном коде на 8-битном регистре
- запишем число 22₁₀ в двоичной системе: 10110₂
- дополним его слева нулями до 8 знаков: 00010110
- поскольку число положительное, его не нужно менять.
в) выполняем сложение
\displaystyle \quad 11101111 \\ +00010110 \\ ------ \\ |1|00000101
Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). При суммировании в дополнительном коде переполнение игнорируется, поэтому результат не меняется.
4,7(26 оценок)
Открыть все ответы
Ответ:
FleachBeast
FleachBeast
05.11.2021

Объяснение:

Здесь полная аналогия с тем, как мы складываем в обычной, десятичной системе. Объясню лучше на примере.

Мы знаем, что можно складывать числа "в столбик":

24

+13

 37

то есть строго разряд под разрядом. Но что мы делаем, когда в одном разряде получается число, больше 9? Правильно, переносим десяток в старший разряд!

15

+19

 24 (не 214!)

Здесь та же ситуация, отличие только в том, что максимальная цифра в разряде равна 7 (как в нашей десятичной записи максимальная цифра в записи разряда равна 9, а следующее число - 10 - уже состоит из двух цифр в записи - 1 и 0). Значит, если мы хотим записать число 8 в восьмеричной записи, мы напишем это как 10₈ (нижний индекс показывает систему счисления)

А теперь попробуем сложить два числа в восьмеричной системе:

  21₈

+ 16₈

  37₈

Разряд под разрядом, ничего сложно. А давайте возьмем пример поинтереснее:

  77₈

+ 77₈

7₈ + 7₈ = 16₈, это значит, что в младшем разряде мы напишем 6, а десятки припишем в старший разряд.

  1

  77₈

+ 77₈

  *6

Так как 7₈ + 7₈ + 1₈ = 17₈, то 7 записываем в свой, соответствующий, разряд, а единицу в старший, получив при этом ответ 176₈

В правильности ответа можем убедиться, переведя это все в десятичную запись: 77₈ = 63, 176₈ = 126, 63 + 63 = 126, все верно.

Единственный дискомфорт при таком методе - непривычные результаты сложения. Например, 7 + 7 = 14 (в десятичной записи), но в примере выше 7₈ + 7₈ = 16₈. Поэтому тут нужно быть аккуратным!

4,4(89 оценок)
Ответ:
fariza1974
fariza1974
05.11.2021
#include "iostream"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <cstdio>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
 int i;
 double s = 0, k, size;
 double mas[200];
 cout << "Введите размерность массива:";
 cin >> size;
 srand(time(NULL));
 for (i = 0; i < size; i++)
{
 mas[i] = 0 + rand() % 100; cout << mas[i] << " ";
 }
cout << endl;
 for (i = 0; i < size; i++)
{
 s = s + mas[i];
 }
k = s / size;
 cout << "Среднее арифметическое:" << k <<endl;
 system("pause");
}
4,5(85 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ