正数与负数相加

例:0x8c4-0xf30  

思路:

十进制:直接加减

十六进制:先转2进制,负数转补码,运算后再转成16进制

0x8c4-0xf30  ==  (0x8c4)+(-0xf30)

(0x8c4)+(-0xf30)==> 补码相加

正数的补码是本身,负数的补码是反码+1

所以:

0x8c4补码(2进制)是:

0000,0000,0000,0000,0000,1000,1100,0100

-0xf30

原码:0000,0000,0000,0000,1000,1111,0011,0000

反码:1111,1111,1111,1111,1111,0000,1100,1111

补码:1111,1111,1111,1111,1111,0000,1101,0000

0x8c4补码+-0xf30补码:

0000,0000,0000,0000,0000,1000,1100,0100

+

1111,1111,1111,1111,1111,0000,1101,0000

=

1111,1111,1111,1111,1111,1001,1001,0100

=

0xFFFFF994

你可能感兴趣的:(c语言)