c++中带符号二进制数的表示
一、二进制表示带符号数方法:
(1)最高位为1表示负数,最高位为0表示正数;
(2)哪一位是最高位取决于变量类型的字节数;
eg:在win32控制台应用程序中,int是32位,即是4字节的类型,当我们定义int i;那么这个i的最高位在从左数第三十一位(默认左一为第0位)。
二、原码补码反码:
(1)正数:原码补码反码是一样的;
(2)负数:负数的原码除了最高位为1,其余和正数一致,其反码除了最高位不变其余位为按位取反,补码为反码加1;
eg:对于win32平台:
22的原码为0000 0000 0000 0000 0000 0000 0001 0110
22的反码为0000 0000 0000 0000 0000 0000 0001 0110
22的补码为0000 0000 0000 0000 0000 0000 0001 0110
-22的原码为1000 0000 0000 0000 0000 0000 0001 0110
-22的反码为1111 1111 1111 1111 1111 1111 1110 1001
-22的补码为1111 1111 1111 1111 1111 1111 1110 1010
三、编程中所有数都用数的补码来表示为机器字:
(1)即22在机器中表示为0000 000