黑马程序员技术交流社区

标题: 关于位运算符反码的问题.!!.. [打印本页]

作者: 刘俊佳    时间: 2012-7-28 10:58
标题: 关于位运算符反码的问题.!!..
本帖最后由 刘俊佳 于 2012-7-29 21:06 编辑

毕老师视频中讲到如果要取6的的负数的话,那就是先取6的反码再加一,就得到-6,那么这样的话,是不是我就可以直接知道任意一个正数或者任意一个负数的反码了,比如~7就是-8
作者: 侯宪博    时间: 2012-7-29 05:17
首先要了解
原码,反码,补码
这个是微机原理的知识
正数
原码,反码,补码都是它本身
0的原码有两个,拿8位来说一个全是0一个是1000-0000
负数
原码是符号位(第一位)为1,其余跟正数一样
反码是原码除符号位其余都取反
补码是反码+1
计算机上的定点数全是以补码形式存在
原码和反码是拿来给人计算补码的


其次,毕老师说的那是一个规律
不是反码加1
而是取反加1
也就是说一个正数
把所有位取反加1
就是这个数负数的补码
按照上面的算法试一试,绝对都是这个规律
希望对你有所帮助。。。
作者: 高薇    时间: 2012-7-29 06:22
负数的二进制表现形式:

6=110

-6:其实就是6的二进制取反,然后加1

0000-0000 0000-0000 0000-0000 0000-0110

        1111-1111 1111-1111 1111-1111 1111-1001

+      0000-0000 0000-0000 0000-0000 0000-0001

=1111-1111 1111-1111 1111-1111 1111-1010     

规律:负数的最高位是1。
注意:这里强调是正数的取反加1.
作者: 刘俊佳    时间: 2012-7-29 21:06
谢谢楼上各位的解答!!,明白了




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