1) 119 > 0, пишем в прямом коде.
119 = 64 + 32 + 16 + 4 + 2 + 1 = 01110111.
-61 < 0, пишем в дополнительном коде.
Прямой код: 61 = 32 + 16 + 8 + 4 + 1 = 00111101
Инверсия: ~61 = 11000010
Дополнительный код: - 61 = ~61 + 1 = 11000011.
2) При сложении без знака при переполнении надо просто вычесть из суммы число 2^8 = 256.
70 + 200 = 270 = 270 - 256 = 14 = 8 + 4 + 2 = 00001110 + (cf = 1)
При этом устанавливается в 1 флаг переноса cf, который означает, что результат больше, чем 256.
3) При сложении со знаком при переносе 1 в разряд знака устанавливается в 1 флаг переполнения of.
55 + 176 = 231 = 128 + 64 + 32 +. 4 + 2 + 1 = 11100111 + (of = 1)
Но первая 1 в арифметике со знаком означает минус, поэтому получается
-(256-231) = - 25
Copyright © 2024 SCHOLAR.TIPS - All rights reserved.
Answers & Comments
Verified answer
1) 119 > 0, пишем в прямом коде.
119 = 64 + 32 + 16 + 4 + 2 + 1 = 01110111.
-61 < 0, пишем в дополнительном коде.
Прямой код: 61 = 32 + 16 + 8 + 4 + 1 = 00111101
Инверсия: ~61 = 11000010
Дополнительный код: - 61 = ~61 + 1 = 11000011.
2) При сложении без знака при переполнении надо просто вычесть из суммы число 2^8 = 256.
70 + 200 = 270 = 270 - 256 = 14 = 8 + 4 + 2 = 00001110 + (cf = 1)
При этом устанавливается в 1 флаг переноса cf, который означает, что результат больше, чем 256.
3) При сложении со знаком при переносе 1 в разряд знака устанавливается в 1 флаг переполнения of.
55 + 176 = 231 = 128 + 64 + 32 +. 4 + 2 + 1 = 11100111 + (of = 1)
Но первая 1 в арифметике со знаком означает минус, поэтому получается
-(256-231) = - 25