A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ztwztw 中级黑马   /  2014-1-5 21:05  /  1523 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


class Demo  {
        int y = 3;
        public static void main(String[] args) {
        
                int x = 173;
                byte b = 127;
                x = x + b;
                b = (byte)(b + x);   // 明明byte型会自动提升为int型运算,运算结果x=300我可以理解,但是为什么b=44?
                System.out.println(b);
                     System.out.println(x);
        }
}
这个时候b= -85;这是怎么算出来的。为什么这么算啊

1 个回复

倒序浏览
b+x=300
300=1 0010 1100是负数,在计算机内存储的是补码
转换成补码,就是取反,再加1,即1  1101  0101
再转换成字节,截取低八位,就是1101 0101=-85
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马