大白话系列之————关于二进制的简单解读

本文深入探讨了二进制的基本概念,以及不同数据类型如何影响二进制数的解读,例如byte和short类型的取值范围及二进制表示。同时,通过具体例子解释了正负数在二进制中的表示方法,以及数据类型向下转换时二进制数的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二进制的话不用多说,就是0和1的组合,每个0和1占据一个bit位。
1个字节有8个bit位。我们选择数字5,并以java为例:
byte类型的5占据一个字节,那么在计算机中5存在的形式就是00000101。
short类型的5占据两个字节,其在计算机中存在的形式为00000000 00000101。

那么我们再以byte为例,如果抛开正负,也就是抛开符号来谈的话。byte的取值范围是00000000~11111111。
直接换算成10进制的话就是0到255。但是我们都知道,byte的取值范围其实是 -128~+127。
这是因为在计算机中,一个数据的第一个bit位,也就是最左边的bit位其实是符号位。0代表正数,1代表负数。我们可以理解为第一个bit位不参与运算。那么byte类型的取值范围其实就变成了±(000 0000~~111 1111,注意这里只有7个bit位,因为符号位被我省去)
这样算的话,取值范围就变成-127~+127。那么-128哪去了呢?玄机就在000 0000。我们给其补上符号位0和1。得到两个二进制码0000 0000和1000 0000。
其中0000 0000即十进制的0,而1000 0000就是十进制的-128(涉及到二进制的原码,反码,补码,这里不理解的可以百度)。

一定要注意的是,同样的二进制码,在不同的数据类型中代表的数字不一定相同。
如1000 0001,在byte类型中,由于只有1个字节,也就是8个bit位。所以左边第一个bit位1代表的是符号位,不参与运算,只代表这个数是负数。数值是-127。
而在short类型中,由于占用两个字节,所以1000 0001其实就是0000 0000 1000 0001,
最左边bit位为0,后面所有bit位参与运算,最终结果为129。

关于基本数据类型向下转换;

    @org.junit.Test
	public void test8() {
		short s = 32641;
		byte i =(byte) s;
		System.out.println(i);
	}

Short类型的32641在计算机中的二进制码为0111 1111 1000 0001
在向下转型的过程中,由于byte类型只占一个字节8个bit位,所以只能接收到后边8位,也就是1000 0001。对应的十进制就是-127。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值