A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢铭 中级黑马   /  2013-8-10 00:55  /  1131 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢铭 于 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)
整个运算是否是这样的?

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马