社区
Java SE
帖子详情
byte 表示范围是-128 至 127 . 那么-128是如何表示出来呢?
孤尽JavaSea
2009-10-09 09:52:24
如果是:
1000 0000
第一位是符号位。
那么应该是 -127
强烈质疑中。。。。
...全文
981
15
打赏
收藏
byte 表示范围是-128 至 127 . 那么-128是如何表示出来呢?
如果是: 1000 0000 第一位是符号位。 那么应该是 -127 强烈质疑中。。。。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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的二进制码处理成负数的绝对值最大的数字了
火龙果被占用了
2009-10-09
打赏
举报
回复
[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
火龙果被占用了
2009-10-09
打赏
举报
回复
动动脑筋啊?
8 位二进制序列可以表示 256 个值。
正数和负数平分一下,就是正负各 128 个值,由于 0 算作负数了,所以正数最大只能到 127,负数没有少可想而知就是 -128 了。
补码的
表示
范围
_关于
byte
的
范围
为什么是 -
128
——
127
?
初入知乎:今天是19年的第四天了,先走个流程给大家拜个年,祝大家新的一年里身体健康,工作顺心,事事如意,成家的家庭和睦,单身的早日脱单! 本人18年在知乎看过很多位大佬的文章,受益良多,于是萌生想法,把自己个人的情绪以及对java中一些基础的东西写上知乎,其一目的,就是练练文笔,锻炼思绪;其二就是分享学习心得; ps(因为开玩笑跟朋友打赌,在19年每周要在知乎上写一篇关于java心得,...
原码 反码 补码 数据类型的
表示
范围
(例如
byte
型为什么是-
128
~
127
)
最近复习c++,发现原码反码补码以及有符号数和无符号数的
表示
范围
这方面的概念很模糊,现整理如下,供大家参考。 1、原码: 最高位
表示
数的符号,其他位
表示
数值 例如:[+7]原 = 0000 0111 [-7]原 = 1000 0111 2、反码: 正数的反码与原码相同 例如:[+7]反 = 0000 0111 负数的反码是由原码的符号位不变,其余为按位取反 例如:[-7]反 = 1111 1000 3、补码 正数的补码与原码相同 例如:[+7]补 = 0000 0111 负数的补码是由其反码的基础上加一
为什么
byte
的
表示
范围
为-
128
~
127
1
byte
=8 bit; 00000000~11111111 则8位总共能
表示
2^8=256个数值; 对于有符号数值,貌似可以这样理解: +0:00000000 1:00000001 +
127
:011111111 -0:10000000 -1:10000001 -
127
:11111111 但是,上述过程不正确 对于正数,其原码=补码=反码 对于负数,反码为原码除符号位外,其他位取反,补码则是反码+1 例:111111111在计算机中指的是补码,而不是所谓的-
127
的原码, 11111111→1111111
java中
byte
类型
表示
范围
为什么是-
128
~
127
?
byte
类型由一个字节即8位二进制数组成,比如01111111
表示
正数1.首位
表示
符号位,0
表示
正数,1
表示
负数.计算机内的数据都是以补码来储存的,正数的补码是本身,负数的补码就是反码加1.反码是人计算补码的,规定正数的反码是本身,负数的反码是符号位不变,其余位取反.计算机的计算只有加法计算,比如2-3会等价于2+(-3),2的源码是00000010,补码是00000010,-3的源码是10000...
为什么一个
byte
表示
的数的
范围
是 -
128
~
127
计算机中带符号的整数都是用的二进制的补码,这点我们需要明确。那为什么计算机存储要用补码而不直接用原码,其实就是为了计算机自己方便运算,后面会介绍。 计算机中
表示
-
128
~
127
的格式如下: 0000 0000 0 0000 0001 1 …… …… 0111 1111
127
1000 0000 -12...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章