java byte 强制转换,在线等 java文件中 int i=1000022; byte bb=(byte)i; System.out.println(bb);1输出的bb等于多少呢2如果byte强制转换的值超过了范围,那么会按什么规律输出值呢,thanks 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 bb=86byte强转取低位一个字节 1000022的二进制是: 1111 0100 0010 0 1 0 1 0 1 1 0byte最多能装下: ------------------------0 64 0 16 0 4 2 0 ================================================结果 ----------------------------------64+16+4+2 = 86byte 类型 在内存中所占空间大小是 一个字节 也就是八位 1.输出bb等于86。2.将int强制转换为byte超过byte类型表示范围后,应该将i除512后取余数;如果该int型数据为负数,则将int型数据加512直到能够到byte的表示范围位置。自己测试总结的结果,不知准确与否。 因为byte占8个bit位.int占32个bit位,将int转成byte相当与强制截取int的二进制数的后8位,由于多余的部分byte空间装不下,因此扔掉. 取其后8位bit位 转成10进制的值就是结果,先将要转number数转换成二进制数再取后八位取值以后的8个bit位最高位数为0则表示结果为正那么直接将取得的二进制数再转成十进制数就是得到的结果.如果取值以后的最高位数等于1,表示此数为负数那位就将此二进制数转化成十进制数-256 得到的就是转换后的byte结果:如果是十六进制或者是八进制也是一样的! 例:1,int number = 1000022;因为int 为 32位,byte 为 8位1000022 的二进制为: 0000 0000 0000 1111 0100 0010 0101 0110取后八位:0101 0110 再将其转成十进制为 (这里的最高位等于0) 直接转成十进制得到结果则 int number=1000022 强转成 byte结果是:86.2,int number= 500;因为int 为 32位,byte 为 8位500的二进制为:0000 0000 0000 0000 0000 0001 1111 0100取后八位:1111 0100 再将其转成十进制为 244 (这里的最高位等于1) 244-256=-12 所以以500转成byte为-12 超出范围只取二进制位的低 8 位,相当于byte b = (byte)(num & 0xff); 新手百思不其解... Jboss启动时提示错误,无法解析server目录下的文件 下面程序有些问题? 马上要去面试了,大家能帮忙指点注意哪些么? 移动图片后坐标的获取问题 怎么切换到另一个界面 为什么我的Rose2003 for win在启动时总是报告“java.lang.NoClassDefFoundError”? 关于JDBC 初学java用什么书好? 菜鸟问题:怎么用Label实现Button的鼠标事件效果(见内容)? Scanner类中分隔符的使用 又是java环境变量的问题。。。我都无语了
byte强转取低位一个字节
byte最多能装下: ------------------------0 64 0 16 0 4 2 0
================================================
结果 ----------------------------------64+16+4+2 = 86byte 类型 在内存中所占空间大小是 一个字节 也就是八位
2.将int强制转换为byte超过byte类型表示范围后,应该将i除512后取余数;如果该int型数据为负数,则将int型数据加512直到能够到byte的表示范围位置。
自己测试总结的结果,不知准确与否。
取其后8位bit位 转成10进制的值就是结果,先将要转number数转换成二进制数再取后八位
取值以后的8个bit位最高位数为0则表示结果为正
那么直接将取得的二进制数再转成十进制数就是得到的结果.如果取值以后的最高位数等于1,表示此数为负数
那位就将此二进制数转化成十进制数-256
得到的就是转换后的byte结果:如果是十六进制或者是八进制也是一样的! 例:
1,int number = 1000022;
因为int 为 32位,byte 为 8位1000022 的二进制为: 0000 0000 0000 1111 0100 0010 0101 0110
取后八位:0101 0110 再将其转成十进制为 (这里的最高位等于0) 直接转成十进制得到结果
则 int number=1000022 强转成 byte结果是:86.2,int number= 500;
因为int 为 32位,byte 为 8位500的二进制为:0000 0000 0000 0000 0000 0001 1111 0100
取后八位:1111 0100 再将其转成十进制为 244 (这里的最高位等于1)
244-256=-12 所以以500转成byte为-12