此时符号位不是1,而是0,代表正数,显然错误。其实对于补码,最高位符号位对应的权值是-8,所以0111真正代表数字为 -8*0 + 4*1 + 2*1 + 1*1 = +7 ②假设符号位不参与取反,那么符号位不参与运算,补码为1111(按位取反得1110,末位+1得1111)。结果为 -8*1 + 4*1 + 2*1 + 1*...
补码算符号位么?
1.对于原码转换为补码是不算符号位的(我猜你问的就是这个)
不相信的话可以给你举个例子证明一下:
不妨取一个4-bit register,规定最高位为符号位,对于-1原码表示为1001;
对于补码,按位取反,末位+1
①假设符号位参与取反,那么补码为0111(按位取反得0110,末位+1得0111)。
此时符号位不是1,而是0,代表正数,显然错误。
其实对于补码,最高位符号位对应的权值是-8,所以0111真正代表数字为
-8*0 + 4*1 + 2*1 + 1*1 = +7
②假设符号位不参与取反,那么符号位不参与运算,补码为1111(按位取反得1110,末位+1得1111)。
结果为 -8*1 + 4*1 + 2*1 + 1*1 = -1
对于原码,最高位权值是-1(所以常常理解为就是一个负号),但是对于补码最高位权值是-2^n(不仅仅是一个负号)
2.对于补码表示的数字求相反数(相反数仍以补码形式表示),符号位是参与的。
举个例子:2-bit Register
-1补码表示为 11
求-1的相反数:每位都取反,末位+1得到-1相反数为01,即+1
如有错误,欢迎指出。
HITWH ---LEVI2023-09-01