int类型转换byte类型 |
您所在的位置:网站首页 › integer怎么计算 › int类型转换byte类型 |
计算机中,int类型占用4个字节,byte类型占用1个字节; 当int类型强转为byte类型时,计算机会截取最后的八位(1个字节); 由于计算机存储数据时,都是以补码的形式进行存储。 然而,我们通常看到的数却是计算机存储的补码先转换成反码,后转换成原码,再转换成十进制呈现的。
原码、反码与补码的关系: 正数: 原码 = 反码 = 补码 负数: 原码取反 = 反码(符号位不变); 反码 + 1 = 补码(符号位上的进位舍弃)
举例: int a = 128,转换成二进制形式是0000 0000 0000 0000 0000 0000 1000 0000, 由于正数的原码=反码=补码,因此计算机存储的是0000 0000 0000 0000 0000 0000 1000 0000。
int a = -128,转换成二进制形式是1000 0000 0000 0000 0000 0000 1000 0000, 由于负数的原码、反码与补码的转换关系是:原码取反=反码(符号位不变),反码+1=补码; 反码:1111 1111 1111 1111 1111 1111 0111 1111 补码:1111 1111 1111 1111 1111 1111 1000 0000 因此,在计算机中存储的是1111 1111 1111 1111 1111 1111 1000 0000
int a = 128; byte b = (byte) a; // b=-128 首先,由上述第一个例子得知,128在计算机中存储的补码形式为0000 0000 0000 0000 0000 0000 1000 0000, 此时强制转换成byte类型的数据时,计算机会自动截取最后的八位(1个字节)1000 0000, 由补码最高位为1得知,转换后的数据是一个负数, 根据负数补码求反码,我们可以得到该数的反码是1111 1111, 根据负数反码求原码,可得到该数的原码是1000 0000 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |