数据转换的疑问! public class 数据类型转换 { public static void main(String[] args) { byte b; int i=128; b=(byte)i;//数据越界 System.out.println(b); }}-128;数据越界的结果为什么会是-128而不是其他?初学JAVA望高手指点一二! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 byte 的数据范围是-128 ~ 127128属于越界。 byte是8位的,-2的7次方 ~~ +2的7次方-1 也就是-128 ~ 127 128超出了范围:127,因此结果为:-128+(128-127);其中前边的-128为byte的下线,128为你输入的int数,127为byte的上线 因此结果为:-128+(128-127)-1;其中前边的-128为byte的下线,128为你输入的int数,127为byte的上线 128对应的二进制是10000000,而二进制10000000对应的byte就是-128 有谁可心说说00000000是0不是-0吗?可不写一个java程序验证^_^ 二进制10000000对应的byte,上面的问题其实就是为什么会是-128?有谁能具体讲讲,非常感谢! java的负数是用补码(反码+1)表示的,int和byte的占位不同就有了上面的结果int里128:00000000000000000000000010000000-128:11111111111111111111111110000000byte里126:01111110127:01111111-127:10000001-128:10000000可是byte只占1位,强转之后丢失高位:本来的128就变-128了 常见的字符串解析抽取问题,40分,很简单的,大家过来看看 java Matcher group 的问题 构造器的初始化顺序问题(这代码为什么这样) 这句话哪错了呢?关于SQL函数依赖 java 如何连接音乐 java.sql.sqlexception microsoft odbc 驱动程序管理器 无效的游标状态 关于JAVA中表格的选择问题 求救:关于Java自动输入的问题(万分紧急!) 一个关于内部类的问题,谢谢,立即结帐!! 好久没来了csdn了,大家好。请问一个很简单的问题。关于forte的 3!+5!+7!+9!=???? 一个线程同步的小问题
128属于越界。
int里
128:00000000000000000000000010000000
-128:11111111111111111111111110000000byte里
126:01111110
127:01111111
-127:10000001
-128:10000000可是byte只占1位,强转之后丢失高位:
本来的128就变-128了