100分求一简单的回答 求expr的值,要求是分析整个过程。要详细的。。非诚勿扰 int a = 255; int expr = (byte)a+ (((byte)a) & 0xff); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int a = 255; int expr = (byte)a+ (((byte)a) & 0xff); //a的二进制为00000000 00000000 00000000 11111111 //强制转换为byte时,截取其低8位,也就是说取11111111 //这个值是-1的补码形式,所以a强制转换为byte后的值是-1。 //0xff的二进制位11111111,这两个值按位与以后还是11111111, //java中byte,short,char在运算的过程中自动转化为int型, //故其十进制是255,然后和-1相加,所以expr的值为254 int a = 255; int expr = (byte)a+ (((byte)a) & 0xff); //a的二进制为00000000 00000000 00000000 11111111 //强制转换为byte时,截取其低8位,也就是说取11111111 //这个值是-1的补码形式,所以a强制转换为byte后的值是-1。 //0xff的二进制位11111111,这两个值按位与以后还是11111111, //java中byte,short,char在运算的过程中自动转化为int型, //故其十进制是255,然后和-1相加,所以expr的值为254 楼上正解..byte是8位,最左边为符号位,转换为补码形式后为-1,主要是((byte)a) & 0xff这一步会自动转成int类型,得到255,两者相加为254 1楼的正解。3楼的补充也是对的。LZ可能主要是没有注意到基本类型所占的空间大小具体的如下: byte 1 short 2 int 4 char 4 long 8 double 8 如果超过了范围的话就会向低取整,还有就是负数的那个问题 java高手请指教 开源论坛 GUI只打开一个窗口实例的方法 请问JAVA中有实现拷贝文件的类和方法吗? 我哭,我哭.配置jdk问题 最强大脑中的盲填数独,用程序有没有可能实现? [求助][讨论]大家对这个项目有什么建议,请指教和讨论!!! 学完java到底能做什么??????????????????????? 面试题,关于构造方法和重写的问题 求大神指导 JAVA输出一个段数字,按照时间的格式 问个比较小白的问题
int a = 255;
int expr = (byte)a+ (((byte)a) & 0xff);
//a的二进制为00000000 00000000 00000000 11111111
//强制转换为byte时,截取其低8位,也就是说取11111111
//这个值是-1的补码形式,所以a强制转换为byte后的值是-1。
//0xff的二进制位11111111,这两个值按位与以后还是11111111,
//java中byte,short,char在运算的过程中自动转化为int型,
//故其十进制是255,然后和-1相加,所以expr的值为254
int expr = (byte)a+ (((byte)a) & 0xff);
//a的二进制为00000000 00000000 00000000 11111111
//强制转换为byte时,截取其低8位,也就是说取11111111
//这个值是-1的补码形式,所以a强制转换为byte后的值是-1。
//0xff的二进制位11111111,这两个值按位与以后还是11111111,
//java中byte,short,char在运算的过程中自动转化为int型,
//故其十进制是255,然后和-1相加,所以expr的值为254
具体的如下: byte 1 short 2 int 4 char 4 long 8 double 8
如果超过了范围的话就会向低取整,还有就是负数的那个问题