Другие языки программирования и технологии

Подскажите, что значит вычислить выражение на знаковом байтовом регистре?

Молодец, Павел. очень умное такое блабла.
Но есть 1 момент
21(h) *47(h) = 4FE(h)

= 10011111110 (b)

затем - берем младший байт 11111110 = FE (h), в знаковом (дополнительном) коде это минус 2

берем ОF (00001111) - преобразуем в дополнительный код, это инверсия а потом +1
в итоге 11110001

вычитаем из 11111110 11110001
ответ 0001101, десятичное тринадцать

http://ru.wikipedia.org/wiki/Допол нител ьный_код_(представл ение_числ а)

Удачи. Надеюсь, ты не забудешь проставить мне лучший ответ. Это было не мгновенно посчитать даже на калькуляторе.

Да, флаг переполнения это избыточная информация, для решения не нужна. Может обрабатываться, может игнорироваться
ТИ
Темрболат Ибраимов
25 762
Лучший ответ
Регистр - это специальная ячейка памяти, находящаяся в процессоре и использующаяся для вычислений. Байтовый - это его размер, 1 байт - 256 разных значений. Знаковый - означает, что 1 бит используется для кодирования знака (0 - плюс, 1 - минус) , итого значения могут быть от -128 до +127 (или от -127, в зависимости от кодировки) .

Добавлено
Я не знаю, в какой форме от вас этого хотят, какие ограничения на переполнение (выставляется флаг или вызывается прерывание) и т. д. Поэтому однозначный ответ дать не могу.
Условный ассемблерный код будет примерно такой (0xN - 16-ричная запись) :
LOAD [ A ] #Загружает в аккумуляторный регистр содержимое ячейки A=0x12
MUL [ B ] #Умножает содержимое аккумулятора на B=0x47, результат будет 0x50E, что переполнит аккумулятор.
SUB [ C ] #Вычитает из аккумулятора C. Если не произойдет прерывания на пред. команде, и при переполнении аккумулятор сохраняет нижние разряды (что ни из чего не следует) , то 0x0E-0x0C=0x02=2
Ответ, видимо, 2, но возможны варианты, и очень даже значимые.
Af
Afnescafe
67 292