探究Java中byte数据类型范围为何是(-128到127)

发布于:2022-08-06 ⋅ 阅读:(288) ⋅ 点赞:(0)

Java中byte数据类型范围为何是(-128到127)

知识要点

  1. byte在java中转为二进制有8位长度
  2. 二进制的最高位是符号位
  3. byte数据类型取值范围为(-128到127)

关键词解析

8位

就是字面的意思,比如0000 0000就是占了8位

符号位

即根据第一位二进制位来判断此二进制数是正数还是负数,如果此二进制第一位是0,就代表这个二进制就是一个正数,是1就是负数

下面我们使用编译器来验证结果

-128

public class HelloWorld {
    public static void main(String []args) {
		byte a = -128;
		//使用下面的byte转换二进制字符串
		String b = getBinaryStrFromByte(a);
        System.out.println(b);
    }
	
	public static String getBinaryStrFromByte(byte b){
        String result ="";
        byte a = b; ;
        for (int i = 0; i < 8; i++){
            byte c=a;
            a=(byte)(a>>1);//每移一位如同将10进制数除以2并去掉余数。
            a=(byte)(a<<1);
            if(a==c){
                result="0"+result;
            }else{
                result="1"+result;
            }
            a=(byte)(a>>1);
        }
        return result;
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oe3RHLpg-1659790264930)(C:\Users\ADMINI~1\AppData\Local\Temp\1659786330550.png)]

可以验证得知,我们的第一位就是符号位1代表负数,如果byte占9位的话,那么正确的写法应该是1100 0000 0,但是byte最大8位,所以我们不能使用“正确”的写法

这也使得本来128应该表示为1000 0000的冲突数被剔除,byte最大位只能是127,使byte范围为(-128到127)

127

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gAlmJQYl-1659790264932)(C:\Users\ADMINI~1\AppData\Local\Temp\1659790120446.png)]

很显然,8位的byte位最大只能装下正127

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到