社区
Java SE
帖子详情
java 基础问题 关于byte
able_7
2010-01-07 05:16:58
byte的取值范围只能是:-128 -- 127了 即 负的2的7次方到2的7次方减去1。
为什么 byte 的最大值 2的7次方减去1。
希望大家 能讲解通俗易懂点 谢谢
...全文
202
20
打赏
收藏
java 基础问题 关于byte
byte的取值范围只能是:-128 -- 127了 即 负的2的7次方到2的7次方减去1。 为什么 byte 的最大值 2的7次方减去1。 希望大家 能讲解通俗易懂点 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bjtopcomm
2010-06-24
打赏
举报
回复
1000 0000 是 -1吗?
还是1000 0001 为-1?
老兵-516
2010-06-24
打赏
举报
回复
1000 0001 是-1 的原码;
1111 1111 是-1 的补码;
byte数据占一个字节即8位,正数使用原码表示,负数则使用补码表示。
所以在byte数据中就是 1111 1111 了。是这样吧?
humman7
2010-01-08
打赏
举报
回复
[Quote=引用 10 楼 sunnylyy 的回复:]
引用 8 楼 yinghan2005 的回复:
引用 5 楼 xiezhifu 的回复:
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
别的人不要乱讲,此乃正解
不要误导人,二进制11111111 = -1
[/Quote]
说的好,我愧对搂主给的一分呀
wenjjing2lianee
2010-01-07
打赏
举报
回复
[Quote=引用 7 楼 bayougeng 的回复:]
负值:128个
正值:127个
非负非正0:1个
加起来正好是256个。
0把正数的那个名额吃掉了。
[/Quote]
...
xiezhifu
2010-01-07
打赏
举报
回复
楼主这个问题如果真的想弄明白的话,最好自己去查找计算机中数的表示相关的定义标准。我们说的都是看教科书来的知识,不一定说得很准确明了的。其实我自己也不是很明白为什么要这样表示,搞得人人头痛
xiezhifu
2010-01-07
打赏
举报
回复
[Quote=引用 5 楼 xiezhifu 的回复:]
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
[/Quote]
谢谢10、11楼纠正,刚才急着去吃饭,我没有检查就贴出去了。
11111111是-1的补码
10000000是-128的补码
总结:byte数据占一个字节即8位,正数使用原码表示,负数则使用补码表示。因此byte数据表示范围为-128~127
补码的计算方法:正数的补码与原码一样,负数的补码为原码(不包括符号位)取反加1
zhaining522
2010-01-07
打赏
举报
回复
[Quote=引用 11 楼 johnson_hong 的回复:]
引用 8 楼 yinghan2005 的回复:
引用 5 楼 xiezhifu 的回复:
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
别的人不要乱讲,此乃正解
11111111很明显是-1,
10000000才是-128。。。。。。
[/Quote]
顶哦
10000000 的补码是取反加1后还是 10000000
这个又点特殊
hongjn
2010-01-07
打赏
举报
回复
这个
[Quote=引用 2 楼 sunnylyy 的回复:]
byte 8位: 最大值的二进制形式0111111 = 127, 最小值的二进制形式10000000 = -128
[/Quote]
零起跑线
2010-01-07
打赏
举报
回复
对,应该去看看补码方面的知识
[Quote=引用 4 楼 dazzlingwinter 的回复:]
一个byte是8位的,最前一个是符号位,最大也只能是0111 1111也就是+127
如果127+1变成1000 000这个时候第第一位为1,要取其补码,前面加符号,就是-128,看看计算机的补码怎么表示就知道了
[/Quote]
Johnson_Hong
2010-01-07
打赏
举报
回复
[Quote=引用 8 楼 yinghan2005 的回复:]
引用 5 楼 xiezhifu 的回复:
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
别的人不要乱讲,此乃正解
[/Quote]
11111111很明显是-1,
10000000才是-128。。。。。。
sunnylyy
2010-01-07
打赏
举报
回复
[Quote=引用 8 楼 yinghan2005 的回复:]
引用 5 楼 xiezhifu 的回复:
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
别的人不要乱讲,此乃正解
[/Quote]
不要误导人,二进制11111111 = -1
Johnson_Hong
2010-01-07
打赏
举报
回复
一个字节有8位,所以byte的范围是00000000---11111111
有很多语言byte是无符号的,因此范围就是0-255
java中byte是有符号表示的,所以00000000--01111111对应在 0~127
10000000-11111111对应在-128~-1
humman7
2010-01-07
打赏
举报
回复
[Quote=引用 5 楼 xiezhifu 的回复:]
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
[/Quote]
别的人不要乱讲,此乃正解
bayougeng
2010-01-07
打赏
举报
回复
负值:128个
正值:127个
非负非正0:1个
加起来正好是256个。
0把正数的那个名额吃掉了。
树成
2010-01-07
打赏
举报
回复
嗯,关于这个问题,楼主必须学习计算机的基础。
楼主必须知道计算机是如何存储数据的,数据在硬盘中的表现形式,了解位,字节,字,宽字等概念,如果更深入还要了解处理器运作机制,寄存器寻址方式,内存存储方式,以及数据的表现形式,如二进制表现形式、八进制表现形式、十进制表现形式、十六进制表现形式以及六十四进制表现形式。
xiezhifu
2010-01-07
打赏
举报
回复
byte数据占一个字节,一个字节有8位,因此byte的最大值使用二进制表示是01111111,最左边的0为符号位,0表示正数,1表示负数,所以最小值为11111111,把它们转换成十进制就分别是127和-128了
Dazzlingwinter
2010-01-07
打赏
举报
回复
一个byte是8位的,最前一个是符号位,最大也只能是0111 1111也就是+127
如果127+1变成1000 000这个时候第第一位为1,要取其补码,前面加符号,就是-128,看看计算机的补码怎么表示就知道了
amdgaming
2010-01-07
打赏
举报
回复
[Quote=引用 1 楼 dollyn 的回复:]
这个要从很基础的地方讲起了...
科班出身的应该都学过计算机原理,好明白。没学过的一两句话恐怕说不清楚。
[/Quote]
咔咔 是的,楼主 找书 看去 。。。
sunnylyy
2010-01-07
打赏
举报
回复
byte 8位: 最大值的二进制形式0111111 = 127, 最小值的二进制形式10000000 = -128
霜之哀伤
2010-01-07
打赏
举报
回复
这个要从很基础的地方讲起了...
科班出身的应该都学过计算机原理,好明白。没学过的一两句话恐怕说不清楚。
java
boolean
byte
_
java
基础
boolean类型所占字节
问题
博客围绕
Java
中boolean类型的存储空间展开,介绍了其可能占1个bit、1个字节、4个字节的理由,指出《
Java
虚拟机规范》中boolean单独使用占4个字节,数组中占1个字节更准确。还解释了用int代替boolean的原因,最后说明其大小未精确定义,是运算效率和存储空间的博弈。
用Base64加解密时发现的
问题
(其实时
java
基础
问题
byte
[]转String)
本文详细介绍了Base64编码解码的过程及注意事项,包括如何避免解码时出现不可读字符的
问题
,并提供了一段改进后的Base64算法实现。
java
中
byte
类型和short类型进行
基础
运算(加减乘除)时的
问题
在
Java
中,
byte
和short类型的数据进行加减乘除运算时,会自动提升为int类型。若要继续存储为原数据类型,需进行强制转换,否则会导致编译错误。例如,`
byte
b=3;b=(
byte
)(b+4);`是正确的处理方式。同样,short类型的运算也遵循此规则,混合运算时,转换为目标类型或使用int接收结果可以避免错误。
Java
基础
系列:关于
byte
/short/char数据类型转换与
java
编译器
问题
探讨
Java
中
byte
、short、char类型的运算规则及自动转换机制,解析编译器如何处理常量优化,避免类型不匹配错误。
java
byte
转float_
byte
数组转float实现与
byte
转换其它类型时进行&运算原理
本文详细解读了如何通过
Java
代码将
byte
数组转换为float,涉及
byte
与int的运算原理,重点讲解了为何需要与0xFF进行与运算以避免int扩展带来的精度
问题
。同时介绍了计算机
基础
的补码概念,以及在
Java
中字节和整型转换的注意事项。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章