二进制基础
程序员文章站
2022-05-08 22:51:02
...
xl_echo编辑整理,交流学习请加1280023003
百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!
什么是二进制
简单的说二进制就是只有0和1表示的计数规则,逢2进1。以此可以看出我们的十进制就是使用0-9表示的技术规则,逢10进1。
二进制和十进制数的生成规则
十进制 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
二进制 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 |
根据上面的数据对应,我们不难发现规律
1 > 0001
10进制的1变成二进制就是0001,也就是 0 + 0 + 0 + 2^0 = 1
2 > 0010
10进制的1变成二进制就是0010,也就是 0 + 0 + 2^1 + 0 = 2
3 > 10
10进制的1变成二进制就是0010,也就是 0 + 0 + 2^1 + 2^0 = 2
……
这里我们反过来推,计算二进制转换成为10进制,拿111001来举例
111001
2^(6-1)+2^(5-1)+2^(4-1)+2^(1-1) = 57
111000
2^(6-1)+2^(5-1)+2^(4-1) = 56
110111
2^(6-1)+2^(5-1)+2^(3-1)+2^(2-1)+2^(1-1) = 55
……
短除2,让十进制转换成二进制
除法 | 商 | 余数 |
---|---|---|
2 | 57 | 28 |
2 | 28 | 14 |
2 | 14 | 7 |
2 | 7 | 3 |
2 | 3 | 1 |
2 | 1 | 0 |
将余数从下往上数,得到57的二进制数:111001
那么我们可以从上面观察到一个问题,那就是上面的都是整数,没有负数。在这里那我们的负数使用二进制是怎么解决的呢?
在计算机中,二进制有符号位
负数的二进制码
机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。
十进制 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 |
---|---|---|---|---|---|---|---|---|---|
8位二进制 | 1000 0001 | 1000 0010 | 1000 0011 | 1000 0100 | 1000 0101 | 1000 0110 | 1000 0111 | 1000 1000 | 1000 1001 |
提及二进制有必要提及一下反码、补码
什么是补码?
这里只演示负数,因为正整数的原码、反码、补码完全一样
补码要从原码、反码说起
- 原码:比较简单就是原来的编码(一个整数,按照绝对值大小转换成的二进制数,称为原码);
- 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
- 补码:反码 + 1 = 符号位不变 + 其他位按位取反 +1
十进制 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 |
---|---|---|---|---|---|---|---|---|---|
8位二进制原码 | 1000 0001 | 1000 0010 | 1000 0011 | 1000 0100 | 1000 0101 | 1000 0110 | 1000 0111 | 1000 1000 | 1000 1001 |
8位二进制反码 | 1111 1110 | 1111 1101 | 1111 1100 | 1111 1011 | 1111 1010 | 1111 1001 | 1111 1000 | 1111 0111 | 1111 0110 |
8位二进制补码 | 1000 0001 | 1000 0011 | 1000 0011 | 1000 0101 | 1000 0101 | 1000 0110 | 1000 0111 | 1000 1001 | 1000 1001 |
上一篇: C语言——十进制转换为二进制
下一篇: HTTP --Web服务器