Byte就是我们常说的字节,通常用大写字母B表示,很多人会把B和b弄混淆,实际上:B代表Byte,b代表bit,1Byte=8bit。什么是bit(比特)呢?通俗点说,bit就是一位的二进制数,要么是0,要么是1。比如说,11111111就是8bit,当然也就是1Byte。
这里先插一句,bit在计算机应用中无处不在,因为计算机的世界就是二进制的世界。硬件中可代表信号脉冲,高低电平指令。软件中的字符编码格式,如大家熟悉的ASCII等。在网络中的IPv4和v6地址、数据包的格式、数据的发送也都是和bit息息相关的(以后会提到)。
接下来进入重点,我们来讨论一下Byte的一些数字性特性。这是学习技术的人所必需具有的一些数字感觉。
1.[0000 0000]~[1111 1111]
这是由8bit组成的1Byte的数值范围0~255,大家可能注意到我写1Byte会四位一分开,这样做的目的是为了方便计算16进制,后面我会说。
2.2进制和10进制的转换。
其实2进制没有我们想象的那么复杂,用十进制的写法来说:对于十进制:10,100,1000,10000是很整得数,而二进制中:2,4,8,16,32,64,128是很整的数。很多人把2进制转为10进制的方法是用数值*2^n次方,这个一般没问题。而十进制转换为二进制很多人用除2取余法,其实这个方法是不太好的。接下来我给大家介绍一个常用简单而实用的方法。
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
上面一排数字代表相应位的二进制,下面一排数字代表如果该位二进制取1且其他位取0得到的十进制的结果,这个很容易算出,比如(1 0000)2=(16)10。举个例子:224转换为二进制,224=128+64+32。所以(224)10=(1110 0000)2。再比如:178=128+32+16+2,因此,(178)10=(1011 0010)2。这种算法要求大家对2,4,8,16,32,64,128这些数字非常敏感。其实最好对252,248,240,224,192,128这些数字也敏感些,这几个数字的含义大家可以探讨一下,以后我也会说到的。
3.16进制与2进制。16进制与2进制的转换其实十分简单,每四位2进制表示0~15这个范围的数也就是一位16进制。因此1Byte可以表示为8位2进制数,同样也可以表示为2位16进制数。通常,16进制数会加0x前缀。初学C的人输出地址的时候都能看到0x,原因即在此。
PS:在这里很多说法是通俗但不专业的,内容也比较简单。专业勿喷。我的目的只是想帮助一些初学者能成功跨过一些小的门槛。当然也难免出现错误,还望大家指出,我一定及时纠正O(∩_∩)O~。