二进制知识
2020-11-22 本文已影响0人
轻轻敲醒沉睡的心灵
1. Byte与Bit的关系
- bit:Binary digit(二进制数位)的缩写,意为“位”或“比特”,是计算机运算的基础;计算机中的最小存储单元,存储内容总是0或1,所有二进制状态的实体都可以使用1bit表示,不能够单独寻址。
- byte: 意为“字节”,是计算机文件大小的基本计算单位; 1byte=8bits ,可以存储所有ASCII所有字符(这是它包含8bits的初衷),十进制整数范围[-128,127]或[0, 255],是最小的可寻址存储单元
- 关系: 1Byte=8bit (简写: 1B=8b)
1TB=1024GB TB是千千兆
1GB=1024MB GB是千兆
1MB=1024KB MB是兆
1KB=1024Byte KB是千字节
注意:Byte的缩写是B也就是字节
2. 二进制
二进制是计算技术中广泛采用的一种数制。二进制数据据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
2.1 二进制的基本运算(只介绍常用的加、乘法)
- 加法:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
例如:
image.png
- 乘法:
0×0=0
1×0=0
0×1=0
1×1=1
2.2 二进制、十进制、十六进制的转化
-
十进制转二进制
以十进制50为例,按短除法:
50 / 2 =25 余0
25 / 2 = 12 余1
12 / 2 =6 余0
6 / 2 =3 余0
3 / 2 =1 余1
1 / 2 = 0 余1
结果就是余数从下往上写 即110010
-
二进制转十进制
以二进制10010为例,按权运算:
0 × 20 + 1 × 21 + 0 × 22 + 0 × 23 + 1 × 24 = 18
2.3 原码、反码、补码
机器数就是8位二进制,第一位代表的符号位。
机器数带符号:正数最高位为0,负数最高位为1
- 原码:符号位加上真值的绝对值
- 反码:正数的反码是其本身,负数的反码就是在其原码的基础上,符号位不变,其余各位取反
- 补码:正数的补码就是其本身,负数的补码就是在原码的基础上,符号位不变,其余各位取反,最后 +1。即,在反码的基础上加1。补码转原码,符号位不变,其余各位取反加一。
2.4 二进制位运算
- 1.<<(向左位移)
运算规则:a<<b,表示a转为二进制后左移b位,左移后,空位补0。
例:
所以,3<<2 = 123: 00000000 00000000 00000000 00000011 // 左移2位,空位补2个0 3<<2: 00000000 00000000 00000000 00001100
规律:a左移b位,就是a乘以2的b次方。 - 2.
>>
(向右位移)
运算规则:a>>b,表示a转为二进制后右移b位,右移后,最高位是0,则空缺位补0;最高位是1,则空缺位补1。
例:
所以,4 >> 1 = 24: 00000000 00000000 00000000 00000100 // 右移1位。右移后,最高位是0,则空缺位补0;最高位是1,则空缺位补1 4>>1: 00000000 00000000 00000000 00000010
规律:a右移b位,就是a除以2的b次方。 - 3.&(与运算)
运算规则:相同位的两个数字都为1,则为1;若有一个不为1,则为0。
例:
所以,5&6 = 45: 00000000 00000000 00000000 00000101 6: 00000000 00000000 00000000 00000110 5&6: 00000000 00000000 00000000 00000100
- 4.|(或运算)
运算规则:相同位只要有一个为1即为1。
例:
所以,5|6 = 75: 00000000 00000000 00000000 00000101 6: 00000000 00000000 00000000 00000110 5|6: 00000000 00000000 00000000 00000111
- 5.^(异或运算)
运算规则:针对二进制位,如果某位不同则该位为1, 否则该位为0。
例:
所以,5^6 = 35: 00000000 00000000 00000000 00000101 6: 00000000 00000000 00000000 00000110 5^6: 00000000 00000000 00000000 00000011
- 6.~(取反运算)
运算规则:对二进制各位数进行取反,即1变成0,0变成1。
例:
所以,~5 = -65: 00000000 00000000 00000000 00000101 ~5: 11111111 11111111 11111111 11111010 // 补码形式 11111111 11111111 11111111 11111001 // 反码 10000000 00000000 00000000 00000110 // 原码