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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void main(String[] args) {
                byte b = (byte)128;
                System.out.println("b = " + b);
        }
打印出来的结果为:b = -128;
首先我们知道byte类型是一个字节,
八个二进制位:
0       0       0       0       0       0       0       0
128   64    32      16    8       4        2       1
那么byte类型的取值范围为:-128~127
而int类型是用4个八二进制位表示
int类型128二进制表示
0000 0000 0000 000 0000 0000 1000 0000
强制转换为byte型时,只取后八位,第一位为正负位那么:
byte类型128的二进制补码表示
    1             0      0       0       0       0        0        0
正负位   
计算机中运算和储存都是通过二进制补码形式,int类型中128二进制表示第一位是0,为一个整数,而当强制转换为byte类型后,因为计算机通过二进制补码形式运算和储存,则
正负位为1,表示为一个负数,通过运算可知byte类型 128的二进制原码为
   1           1     0      0       0       0       0        0        0
为-128


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马