Эмулировать арифметику со знаком числа - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь понять, как создать функцию, которая будет эмулировать арифметическую функцию в сборке со знаковыми числами. Я хочу вернуть десятичное число умножить 2 шестнадцатеричных чисел со знаком. Мне трудно, как справиться, когда есть переполнение. Например:

0x51 * 0x02 = 0XA2

результат будет отрицательным числом, несмотря на то, что оба операнда положительны. Какой должен быть правильный результат, если я использую его в качестве чисел со знаком? Я хочу реализовать это в Python. У меня был поиск, чтобы найти библиотеку, которая делает это, но безуспешно. Я использую число длиной 1 байт. Что я пытался реализовать до сих пор:

def Multiply(x1,x2):
    ispositive=True
    res=GetIntSignNumber(x1)*GetIntSignNumber(x2)
    if x1>=0x80:
        ispositive=not ispositive
    if x2>=0x80:
        ispositive=not ispositive
    if ispositive and res>=0x80:
        raise Exception('must be positive')
    if not ispositive and res<0x80:
        raise Exception('must be negative')    
    return GetIntUnSignedNumber(res)

def GetIntSignNumber(value):
if value >= CalculateHexStrToInt('80'):
    return value-0x100
return value
def GetIntUnSignedNumber(value):
    if value < 0:
        return value+0x100
    return value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...