社区
Java SE
帖子详情
byte型变量的取值范围
sqq4290
2008-04-14 10:03:07
注:"^"代表好多次方,例如2^3代表2的3次方即8
Q1:为什么byte型的最小值是-2^7(即-128)而不是-2^7+1(即-127)?
我按照2进制换算到10进制的方法应该是:
最高位符号位不算,后面7位应该是:-2^6-2^5-2^4-2^3-2^2-2^1-2^0=(-1)*(2^7-1)/(2-1)=-2^7+1=-127
Q2:为什么负数要用补码表示?要得到用byte表示的-8的补码,为什么要先到得到7的源码?
...全文
1829
12
打赏
收藏
byte型变量的取值范围
注:"^"代表好多次方,例如2^3代表2的3次方即8 Q1:为什么byte型的最小值是-2^7(即-128)而不是-2^7+1(即-127)? 我按照2进制换算到10进制的方法应该是: 最高位符号位不算,后面7位应该是:-2^6-2^5-2^4-2^3-2^2-2^1-2^0=(-1)*(2^7-1)/(2-1)=-2^7+1=-127 Q2:为什么负数要用补码表示?要得到用byte表示的-8的补码,为什么要先到得到7的源码?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sqq4290
2008-04-15
打赏
举报
回复
我只是想知道负方向的那个范围是怎么算出的啊,知道得能不能列一下计算过程?
但是书上说了
0
0000000中的最高位表示符号,那就只能用剩下的7位来表示数值吧,那为什么还能表示到-128
hyzhx
2008-04-15
打赏
举报
回复
五楼的朋友,学习了。
wensheng_zh2007
2008-04-15
打赏
举报
回复
看看《计算机组成原理》
thunderclap
2008-04-15
打赏
举报
回复
首先byte是8位的,所以它只能是
00000000-11111111;
其次,这些数字都是补码.
所以它是-128 到 127之间的数.
南南北北
2008-04-15
打赏
举报
回复
好久没看到"补码"了.
晨星
2008-04-15
打赏
举报
回复
1
至于“负数补码最高位为1,其它位等于相应正数的反码加1”——那只是一个教你快速计算补码的“口诀”而已,而非定义性的,最好不要拿它来作更细致分析。
当然,从这个“口诀”中,也推不到跟-128的表示有什么实质性的矛盾,只不过溢出了1位让人有点不大舒服而已。
晨星
2008-04-15
打赏
举报
回复
[Quote=引用 8 楼 sqq4290 的回复:]
我只是想知道负方向的那个范围是怎么算出的啊,知道得能不能列一下计算过程?
但是书上说了00000000中的最高位表示符号,那就只能用剩下的7位来表示数值吧,那为什么还能表示到-128
[/Quote]
补码中,负数最高位都是1,但那可以认为只是一种巧合。
按照补码的定义,一个负数M的补码,其二进制表示等同于无符号整数2 ^ N + M,其中N是这种类型的位数。
对于byte的-128而言,N为8,M为-128,2 ^ 8 + (-128) = 128,而无符号数的128正好是:10000000。
从这个角度来数,当无符号数的0~255表示带符号数时,基中0~127仍表示原值,而128~255则表示-128~-1,补码表示中不像原码那样还有个-0。
晨星
2008-04-14
打赏
举报
回复
用补码表示负数,电路实现简单,可以用一个加法器同时计算加法和减法。
用补码表示的数,按照定义,最小的就是-128。
如果不看定义,你也可以理解为“-0”表拿去表示-128了,仅仅“+0”用来表示0。
本来一个byte,8个比特,有256种状态,正好-128到+127是256个数,一个状态也没浪费。
haoxiongok
2008-04-14
打赏
举报
回复
看看那个什么符来着?
sqq4290
2008-04-14
打赏
举报
回复
[Quote=引用 2 楼 hyzhx 的回复:]
0 1 1 1 1 1 1 1 (127)
1 0 0 0 0 0 0 0 (-128)
基础知识,查一下书。
[/Quote]
!-_- 我就是看了书之后不明白
hyzhx
2008-04-14
打赏
举报
回复
0 1 1 1 1 1 1 1 (127)
1 0 0 0 0 0 0 0 (-128)
基础知识,查一下书。
wanghao111
2008-04-14
打赏
举报
回复
交流群 C++ java 36414176
Java中,为什么
byte
类
型
的
取值范围
为-128~127?
在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么
byte
类
型
的
取值范围
为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对?在解释这个问题之前我们需要了解几个概念:机器数、真值、原码、反码、补码机器数:一个数在计算机中的二进制表示形式, 叫做这个数的机器
Java基础题38:(单选题)能够给一个
byte
型
变量
赋值的范围是( )。 A.0~65535 B.(-128)~127
38、(单选题)能够给一个
byte
型
变量
赋值的范围是( )。 A.0~65535 B.(-128)~127 C.(-32, 768)~32, 767 D.(-256)~255 【正确答案】B 【答案解析】
Byte
的
取值范围
是(-128)~127。
java
变量
取值范围
_JAVA中的
变量
及
取值范围
字节是二进制数据的单位。一个字节通常8位长。但是,一些老
型
号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替
byte
。
变量
:
变量
的数据类
型
;
变量
名=
变量
值数据类
型
基本
型
数值
型
(整数)布尔
型
浮点
型
字符
型
引用
型
String 字符串数值
型
(整数)0-128 19 20 范围 (0,128)小括号不包含该值[0,128)中括号包含该值bate 字节 ...
Java学习知识点巩固及总结
Java中的基本数据类
型
Java中的基本数据类
型
分为四大类: 1.逻辑类
型
:boolean 2.整数类
型
:
byte
,short,int,long (1)
byte
型
对于
byte
型
变量
,分配1个字节内存,占八位, 因此
byte
型
变量
取值范围
是-2^7-2^7-1; (2)short
型
对于short
型
变量
,分配2个字节内存,占16位, 因此short
型
变量
取值范围
是-2^15-2^25-1; (3)int
型
对于int
型
变量
,分配4个字节内存, 因此int
型
变量
取值范围
是-2^31-2^31-1; (
java
变量
取值范围
,JAVA中的
变量
及
取值范围
字节是二进制数据的单位。一个字节通常8位长。但是,一些老
型
号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替
byte
。
变量
:
变量
的数据类
型
;
变量
名=
变量
值数据类
型
基本
型
数值
型
(整数)布尔
型
浮点
型
字符
型
引用
型
String 字符串数值
型
(整数)0-128 19 20 范围 (0,128)小括号不包含该值[0,128)中括号包含该值bate 字节 1个字节 2*7=128例如:by...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章