黑马程序员技术交流社区

标题: 负数在底层是怎么表示的? [打印本页]

作者: 大家伙    时间: 2015-7-21 20:19
标题: 负数在底层是怎么表示的?
位移中有点混淆了,到底负数在底层是怎么表示的?

作者: ZeroHegel    时间: 2015-7-21 21:34
java中数字在运算中存的是补码,这样便于计算机硬件运算(我的理解)。
      整数的补码等于原码;负数的补码是原码取反得到反码,反码再加1。假设一个byte类型(8位),对于有符号数第1位是符号位(0为正数,1为负数),正数1的原码和补码都等于00000001;负数-1的原码是10000001,反码为11111110,补码为11111111 。
       这样来说的话正数1在计算机中存的是00000001,负数-1在计算机中存的是11111111 。
作者: _sunrain    时间: 2015-7-21 21:47
符号位是-1
作者: _sunrain    时间: 2015-7-21 21:49
_sunrain 发表于 2015-7-21 21:47
符号位是-1

错了……1
作者: 李金伦    时间: 2015-7-21 21:52
二进制,除符号位外,取反加1
作者: 白衣卿相    时间: 2015-7-21 22:14
在计算机中所有的数据都是以补码的形式存在。
有符号数据:
1. 正数的原码、反码、补码都相同
2. 负数的原码、反码、补码:
原码:符号位是1,数据值和正数一样
反码:符号位不变,数据值取反
补码:反码+1

作者: T-l-H、小生    时间: 2015-7-21 22:33
这些东东,无论开发,还是面试,都不怎么用得上




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