黑马程序员技术交流社区

标题: 关于负数的进制问题 [打印本页]

作者: jing迪    时间: 2013-10-31 18:06
标题: 关于负数的进制问题
毕老师的视频讲解负数的进制  说负数的二进制最高位是1
比如6的二进制是0000-0110  那么负数应该是各个二进制位取反加1  也就是1111-1010  

但是 1111-1010 不是250吗?2+8+16+32+64+128=250??

怎么会是-6呢???很奇怪有人知道么

作者: 帅气的冬瓜    时间: 2013-10-31 18:28
     这个问题当时也难住我了,后来终于搞懂了。原码、反吗和补码,有一个原则,就是:正数的原码和补码都是一样,而负数就是:反吗是原码求反,补码实在原码加一,最高位是一。
    但是在编程的时候,计算机是以补码存储的。比如说6的原码是0000 0110,而-6的原码是1000 0110,一个负数的补码等于它补码的补码,即:1000 0111就是-7。    这点就是比较容易饶人一些,不过熟了,就不会了。楼主加油
作者: 冯国强    时间: 2013-10-31 18:42
关于这个问题,问题是在于最高位代表的是什么,最高位代表的是数字的符号,0代表的是正负号,即整数;1代表的是负符号,即负数
作者: 李新辉    时间: 2013-10-31 20:01
关于原码,反码,补码……
这是我帮楼主找的文章
楼主看看应该会有帮助……

http://www.douban.com/note/223507364/
--------------------------------------------------------------------------------------
负数我们平时在写的时候其实它前面都是一堆1,我们只是省略了没写
1111-1111…………1111-1010前面都是1,
我们说首位是1,并不是我标绿色的那一位,。而是我们省略掉没写的那部分的最高位(即标红色的那位)
-------------------------------------------------------------------------------
正数的有效位前都是0,也就省略不写
0000-0000…………1111-1010 前面全是0的
我们说首位是0,并不是我标绿色的那一位,。而是我们省略掉没写的那部分的最高位(即标红色的那位)



作者: 半夜雨半夜雨    时间: 2013-11-1 20:45
6的2进制是0000-0000 0000-0000 0000-0000 0000-0110,总共32个2进制位,8个2进制位为1个字节,为避免麻烦才简写的,-6是原码的反码+1




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