当前位置:博客首页>>编程基础 >> 阅读正文

从取反操作学习数值的原码反码与补码

作者: 郑晓 分类: 编程基础 发布于: 2014-05-05 22:12 浏览(3,246) 评论(5)


在程序语言中,取反操作一般用~表示。比如在js中,我们对5这个整数做取反操作,表示为:
~5
结果是:
-6

在网上搜了一些教程了解到,这些数据在计算机中是以补码的形式存在的。

正整数的补码=反码=原码, 三码相同。
这些码就是咱们平时说的二进制表示法。原码就是直接将对应十进制转为二进制后的编码,如这里5的原码是
0000 0101
反码是:
0000 0101
补码是:
0000 0101

取反操作是把二进制所有位数进行取反,所以这里对5取反后的二进制变成了:
1111 1010
我们知道二进制最高位(即最左位)是数值的符号位,这里为1,说明结果是负数。
负数的原码、反码与补码的关系为:
原码–>符号位不变,其它所有位取反–>反码—>+1—>补码
所以这里先对我们得到的二进制减一,得到反码,再符号位不变,其它位取反,得到最终结果:
上一步我们操作得到的结果(补码)为:1111 1010
减一:1111 1001 (反码)
符号位不变,其它位取反:1000 0110 (原码)
现在这个结果就是我们对5取反得到的最终结果的二进制表示,转为十进制为-6,即:
~5 = -6

↓↓微信扫码请我吃份正宗的烤面筋,可带劲啦↓↓
       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/cong-qu-fan-yuan-ma-fan-ma-yu-bu-ma.html

从取反操作学习数值的原码反码与补码:目前有5 条留言

用户评论头像 沫小熙iBlog发表于 2014年05月22日 00:52[回复]

高深莫测

用户评论头像 shaoxieqian发表于 2014年05月21日 14:21[回复]

大哥,评论发不了的哦

    用户评论头像 郑晓发表于 2014年05月21日 17:48[回复]

    你的评论被自动放入垃圾评论里了

用户评论头像 shaoxieqian发表于 2014年05月21日 14:20[回复]

好像很高深的样子哦 😯

用户评论头像 沫小熙iBlog发表于 2014年05月13日 01:54[回复]

过来顶顶,重新开站,望大家支持!