感觉原码、反码、补码什么的太麻烦了,实际上的加减法就是把10进制改成了16进制,其他的没有任何变化。
随便一个式子:
3D25H - 4034H
遇到16就借位,从低位开始减。
5H-4H=1H,不借位;
2H-3H则需要借位,12H-03H=0FH,所以这一位是F;
DH-0H不需要借位,但由于更低位借位了,所以要-1,这一位是C;
3H-4H需要向更高位借位,这一位是F。
得到的结果是有符号数FCF4H。
我们验证它的结果是否正确。
3D25H=3*pow(16,3)+13*pow(16,2)+2*16+5=15653;
4034H=4*pow(16,3)+0+3*16+4
原式=-1*pow(16,3)+13*256-16+1=-783
FCF4H=1111 1100 1111 0100b,
这个等式可以转换为
0CF4H+(1111b)*16^3
也就是说,按照十进制的运算,被加数是不用动的,
而加数(1111b)*16^3转换为10进制即-1*16^3。
原式等于=-1*16^3+0CF4H=-1*pow(16,3)+13*256-16+1=-783
证明运算结果正确。