黑马程序员技术交流社区

标题: 看基础视频,请教大家关于负的2进制的问题 [打印本页]

作者: 郑飞    时间: 2014-6-19 13:22
标题: 看基础视频,请教大家关于负的2进制的问题
本帖最后由 郑飞 于 2014-6-22 01:40 编辑

看了视频还是弄不明白 有点疑问
视频里举例子是:
6的负数
6=0000-0000 0000-0000 0000-0000 0000-0110
-6=1111-1111 1111-1111 1111-1111 1111-1010

但是1111-1111 1111-1111 1111-1111 1111-1010
这个数最高位不就是2的31次幂么 怎么就变成负数了啊 不明白 求教



作者: a6217815    时间: 2014-6-19 14:02
负数以原码的补码形式表达

补码的概念:
正数的补码与原码相同。
负数的补码为原码取反(除最高的符号位),然后在最后一位加1

-6的源码是1000-0000 0000-0000 0000-0000 0000-0110
-6的反码是1111-1111 1111-1111 1111-1111 1111-1001
-6的补码则是反码+1 : 1111-1111 1111-1111 1111-1111 1111-1010
作者: 郑飞    时间: 2014-6-19 14:09
我知道啊,就是不明白 1111-1111 1111-1111 1111-1111 1111-1010怎么就成负数了啊

不也是在2的31次幂的范围内么?
作者: 子木息壤    时间: 2014-6-19 16:14
郑飞 发表于 2014-6-19 14:09
我知道啊,就是不明白 1111-1111 1111-1111 1111-1111 1111-1010怎么就成负数了啊

不也是在2的31次幂的范围 ...

负数是由补码表示的,去百度一下补码反码原码转换看看
作者: 黄宝宝    时间: 2014-6-19 16:17
那你是哪里不懂啊
作者: 人心如水    时间: 2014-6-19 22:57
一号位是1就是负数啊
作者: 郑飞    时间: 2014-6-19 23:04
啊,看了半天终于明白了 原来1111-1111 1111-1111 1111-1111 1111-1010不止2的31次幂
而是比2的31次幂大 明白了 谢谢各位..




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