当前位置: C语言 -- 专题 -- 有符号整数

有符号整数(三)

3、乘法运算

相乘时先对符号位按位异或运算,然后对数值位进行乘法运算,数值位相乘与十进制相似。


1105×78

1) 两个整数的二进制形式

10510 = 0000 0000 0000 0000 0000 0000 0110 10012

7810 = 0000 0000 0000 0000 0000 0000 0100 11102


2) 对符号位按位异或运算

0^0 = 0


3) 数值位相乘

0 1 1 0 1 0 0 1
× 0 1 0 0 1 1 1 0
0 0 0 0 0 0 0 0
0 1 1 0 1 0 0 1
0 1 1 0 1 0 0 1
0 1 1 0 1 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 1 0 1 0 0 1
0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0

所以积的原码为0000 0000 0000 0000 0001 1111 1111 1110,即8190


2(-15)×(-25)

1) 两个整数的二进制形式

-1510 = 1000 0000 0000 0000 0000 0000 0000 11112

-2510 = 1000 0000 0000 0000 0000 0000 0001 10012


2) 对符号位按位异或运算

1^1 = 0


3) 数值位相乘

0 1 1 1 1
× 1 1 0 0 1
0 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 1 1 1 1
0 1 1 1 1
1 0 1 1 1 0 1 1 1

所以积的原码为0000 0000 0000 0000 0000 0001 0111 0111,即375