Отлично.Теперь, по аналогии с примером выше, нам нужно перевести уже наш дополнительный код в прямой, напомню, он равен 1100 0010. <----
Отнимаем единицу и получаем обратный код. Удобно делать так, записать дополнительный код в ответ и смотреть, к чему нужно прибавить единицу, чтобы получить такой дополнительный код. Начинаем с крайнего правого разряда и смотрим: к чему нужно прибавить 1 чтобы получить 0? К 1, получим 10, 0 уходит в ответ, а единичка на следующий разряд. Далее, что нужно прибавить к 0, чтобы получить один. Единицу, но так как мы с предыдущего разряда имеем единичку, то в ответ пишем 0. Далее, чтобы получить 0, что нужно прибавить к 0? Конечно, 0. Так ещё 4 раза. И остались последние 2 разряда, где к 0 надо что-то прибавить, чтобы получить 1. Конечно, в обоих случаях нужно прибавить 1. Итого:
1 1 0 0 0 0 0 1
0 0 0 0 0 0 0 1
1 1 0 0 0 0 1 0
Самое сложное позади! Мы получили инверсный(обратный) код и нам осталось получить прямой. Инвертируем все 0 на 1 и наоборот:
1100 0001 - инверсный код; <-----------------
Объяснение тут есть но его понять не могу. Можно подробнее с примером.
Спасибо!!!
Дмитрий Орлов
26 уровень
Как из дополнительного кода получить Инверсный код. ИЗ этого 1100 0010 получить это 1100 0001??????????????????????
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий Орлов
10 октября 2021, 17:29
Все разобрался.
Может кому понадобится, новичков тут много:
Старший бит в целых числах со знаком используется для обозначения знака. Для положительных чисел он всегда равен 0. В отрицательных числах старший бит всегда равен 1. Такая запись числа в двоичной системе счисления называется прямой код.
Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семи разрядное число. Например:
0 0001101 – положительное число
1 0001101 – отрицательное число
При этом в вычислительной технике прямой код используется почти исключительно для представления положительных чисел.
Для отрицательных чисел используется так называемый дополнительный код. Это связано с удобством выполнения операций над числами электронными устройствами компьютера.
Для перевода отрицательного числа в дополнительный код используется следующий алгоритм:
Все разряды числа (кроме первого разряда) инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011.
Далее следует прибавить единицу к получившемуся инверсией числу:
1 1110011 + 1 = 1 1110100
0
Дмитрий Орлов
10 октября 2021, 17:15
Вот например, если явно число int 450 преобразовать в byte то получим число -62.
то - есть берем 450 это
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
получаем 1100 0010 Но знаковый бит отрицательный, поэтому сначала дополнительный код нужно перевести в прямой и добавить к ответу знак минус.
Как это сделать?
У меня получается - 66 а должно получится -62
0
Дмитрий Орлов
10 октября 2021, 16:51
Был бы очень признателен. С положительными числами вопросов нет.
0
Дмитрий Орлов
10 октября 2021, 16:50
Вопрос в другом как перевести в двоичную систему отрицательное число.
-66
-62
0
Дмитрий Орлов
10 октября 2021, 16:50
С этим я слава богу разобрался.
0
Александр
10 октября 2021, 15:23
Обсуждение
посмотри первый популярный комментарий
0