byte 表示范围是-128 至 127 . 那么-128是如何表示出来呢?

孤尽JavaSea 2009-10-09 09:52:24
如果是:
1000 0000
第一位是符号位。
那么应该是 -127
强烈质疑中。。。。
...全文
881 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤尽JavaSea 2009-10-09
  • 打赏
  • 举报
回复
补码有什么好处??
huangqibing0626 2009-10-09
  • 打赏
  • 举报
回复
举个例子吧,譬如byte=137,明显超出了byte所能表示的范围;所以取其二进制表示:10001001
首先最高位表示符号位,所以输出结果应该是负数,将其取反变为01110110,加1变为01110111,再将其转化为十进制输出:-119
qingkangxu 2009-10-09
  • 打赏
  • 举报
回复
好像大家没有说到实质性问题:
注意计算机表示负数是用补码就OK了。

1,楼主去看看:http://blog.csdn.net/silentbalanceyh/archive/2009/09/28/4608360.aspx
搜索关键字:“计算机里面的原码、反码、补码”。
lxxzhy 2009-10-09
  • 打赏
  • 举报
回复
取反加一
justinavril 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 java_gannbare 的回复:]
为什么要取反啊
直接拿第一位当符号位就得到。
这么费事。。。。
[/Quote]
哥,你应该好好补习下原码,反码和补码的知识了
孤尽JavaSea 2009-10-09
  • 打赏
  • 举报
回复
为什么要取反啊
直接拿第一位当符号位就得到。
这么费事。。。。
justinavril 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 coldanimal 的回复:]
引用 3 楼 bao110908 的回复:
引用 1 楼 bao110908 的回复:
动动脑筋啊?

8 位二进制序列可以表示 256 个值。

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。


说错了:

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数正数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。


00000000的头位是0 所以0算是正数  是这个解释吗 请问?
[/Quote]
不用拘泥于细节 数学上的解释是 0既不是正数 也不是负数 但放到计算机里 符号位是0的话 你说是正数 也没啥问题
一头头 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bao110908 的回复:]
引用 1 楼 bao110908 的回复:
动动脑筋啊?

8 位二进制序列可以表示 256 个值。

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。


说错了:

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数正数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。
[/Quote]

00000000的头位是0 所以0算是正数 是这个解释吗 请问?
lql355 2009-10-09
  • 打赏
  • 举报
回复
java中有正负的,-128是10000000,可以从128取反加一,看出它的补码。如果你把byte b=127 b+=1,那么b=-128了。
lz12366007 2009-10-09
  • 打赏
  • 举报
回复
顶下!!学习了额
justinavril 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bao110908 的回复:]
引用 1 楼 bao110908 的回复:
动动脑筋啊?

8 位二进制序列可以表示 256 个值。

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。


说错了:

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数正数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。
[/Quote]
我估计他是不知道如何表示吧


8位数 最高位是符号位 也就是说正数最大是01111111,负数最小是10000000
网络咖啡 2009-10-09
  • 打赏
  • 举报
回复
程序中把-0的二进制码处理成负数的绝对值最大的数字了
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
动动脑筋啊?

8 位二进制序列可以表示 256 个值。

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。
[/Quote]

说错了:

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数正数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。
xiaozhangnima 2009-10-09
  • 打赏
  • 举报
回复
128的二进制是10000000,-128的二进制是128的二进制取反加1取反后为01111111
所以-128的二进制为10000000
  • 打赏
  • 举报
回复
动动脑筋啊?

8 位二进制序列可以表示 256 个值。

正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧