55问答网
所有问题
java变量byte=(byte)150;为什么结果会给你-106。是把150补码转成了原码对吗?
谢谢!
举报该问题
推荐答案 2020-08-11
byte 类型只有1个字节存储数据, 只能表示-128 到127 范围内的整数, 150 超过了 byte 的表示范围, 强制类型转换就会导致丢失精度, 所以得到了一个错误的值
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/Q84LIGGec4eFFRGcIF.html
其他回答
第1个回答 2020-08-11
java变量byte=(byte)150;为什么结果
相似回答
新手求解释输出的?和-
106
的由来,超过了取值范围这个我倒是知道
答:
按字符输出时,没有对应的ASCII字符。所以,输出 问号 而150是个整数,占四个字节,二进制表示为:000。。。00(24个0)10010110 c
=150;
时会自动丢弃高位的信息,只接收到10010110
(
-
106
的
补码)
,按整数输出时,输出-106
原码
:1110 1010 第一位是符号位,后7位是106的二进制 反码:1001 0101 ...
java
中byte a
=(byte)
1000
为什么
输出成-24求大
答:
回答:这里没涉及
原码补码
反码吧,byte a
=(byte)
1000意思是把一个整形的1000转换为一个byte型的,由于byte类型的取舍范围只有-128~127,1000超出byte的取舍范围了,就从最小值-128开始循环,比如(byte)128比127大1,接着就再取一位,也就是-128,所以(byte)128打印出来就是-128了。(byte)129打印出来就...
java
中byte b=10
;byte
b1=~b;编译错误原因。byte b 2=~10
;是
正
答:
java
中byte在内存中实际上是用int运算的。b取反后,会自动变成int类型。加法、减法,都一样,
byte会
自动变成int类型。所以会报错。而~10可以,这是java字面量编译原则,会先将~10计算出来。在赋值给byte,所以不会有问题。
JAVA
数值越界在内存中是怎么处理的?比如:
byte
b = 129 ,怎么
转?
答:
这个是涉及到内存溢出,直接写byte b = 129肯定是报错的
,如果强转就不一样了结果是-127,因为byte的范围在Java中的定义就是1个字节,即表示数在 -127~128,一共是256个数字,内存溢出就是简单来说就像一个轮子,这个byte型的轮子就是把这256个数字连成一个圈,128后面的数字就是-127,也就是...
在
Java
中int
转byte
类型,超出byte的范围该如何计算,答案尽可能详细_百 ...
答:
以下大概给你说明一下:一个
字节byte
长8位,也就是2的8次方,换成2进制后就是 00000000~11111111 取值范围就是那么多,10进制就是0~255。如果更长的类型如int转成更短的类型,那么只保留短类型那么多长度的数据。假设类型A为9位,其某变量值为 0 1111 1111 ,10进制为255,
转成byte
正好也是255...
大家正在搜
相关问题
java是什么语言?
用Java语言怎么编程
JAVA编程语言是面向对象么?
java程序设计语言和JavaSe的区别
java是解释性编程语言吗?
Java(编程语言的)和Javascript有什么区别?
为什么这么多人选Java编程语言