黑马程序员技术交流社区

标题: 请教关于补码的问题 [打印本页]

作者: 谢铭    时间: 2013-8-10 00:55
标题: 请教关于补码的问题
本帖最后由 谢铭 于 2013-8-10 00:57 编辑

在看到的书上有说:正数的原码、补码是形式是一样的,负数的补码是将该数的绝对值的二进制形式,按位取反再加1
例如-10这个数
绝对值是10,为int型数据,在内存在占4个字节,用32位二制位表示
0000-0000 0000-0000 0000-0000 0000-1010
取反:
1111-1111 1111-1111 1111-1111 1111-1010
加1:
1111-1111 1111-1111 1111-1111 1111-1011,这是-10在内存中的补码形式
整个换算过程是否如上,有问题吗?
2、~10
10的二进制表现形式:
0000-0000 0000-0000 0000-0000 0000-1010(10的原码和补码是一样的)
按位取反:
1111-1111 1111-1111 1111-1111 1111-0101(这是某个数在内存中的补码形式)

在这里想问下:
补码转换成原码,是不是取反后再加1?如果最高的符号位为1,取反是不是不变。

上面的转换是不是这样的?
取反:
1000-0000 0000-0000 0000-0000 0000-0000 1010
加1:
1000-0000 0000-0000 0000-0000 0000-0000 1011(这个式的值为-11)
整个运算是否是这样的?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2