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

二进制的话不用多说,就是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。

参考资源链接:[2023年6月GESP Python三级真题详解与知识点解析](https://wenku.csdn.net/doc/5rajv4d9t7?utm_source=wenku_answer2doc_content) 掌握十进制与二进制之间的转换对于理解计算机科学的基础概念至关重要。在Python中,你可以利用内置函数`bin()`来实现十进制到二进制的转换。这个函数将十进制整数作为输入,并返回该整数的二进制表示形式,该表示形式以字符串形式给出,并且以'0b'为前缀,表示这是一个二进制数。例如,若要将十进制数13转换为二进制,可以使用如下代码: ```python decimal_number = 13 binary_representation = bin(decimal_number) print(binary_representation) # 输出 '0b1101' ``` 在这个例子中,我们首先定义了一个十进制数13,然后使用`bin()`函数将其转换为二进制数,得到的结果是'0b1101'。 除了使用`bin()`函数,你还可以通过编写自己的函数来实现这一转换过程,这有助于加深你对二进制数系统的理解。例如,你可以使用除以2取余的方法,从低位到高位收集余数,然后反转这个余数序列来得到最终的二进制表示。 ```python def decimal_to_binary(n): if n == 0: return '0' binary_digits = '' while n > 0: remainder = n % 2 binary_digits = str(remainder) + binary_digits n = n // 2 return binary_digits print(decimal_to_binary(13)) # 输出 '1101' ``` 在这个自定义函数中,我们通过循环将十进制数除以2,取余数并将其添加到结果字符串的前面,直到商为0。这种方法可以帮助你更好地理解十进制数是如何一步步转换为二进制数的。 为了深入理解这一过程,建议参阅《2023年6月GESP Python三级真题详解与知识点解析》。这份资料不仅为GESP Python三级考试提供了详尽的真题解析,还涉及了多个与编程基础概念相关的知识点,适合青少年学习者巩固和提升自己的编程能力。 参考资源链接:[2023年6月GESP Python三级真题详解与知识点解析](https://wenku.csdn.net/doc/5rajv4d9t7?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值