二进制的数字表达
进制
$$ \begin{aligned} &r(r进制数) = (a_{n-1}a_{n-2}…a_0a_1…a_{-m})r \\ &大小 \ R = a{n-1}\times r^{n-1} + … + a_{-m}\times r^{-m} = \sum_{i=-m}^{n-1} a_i\times r^i \end{aligned} $$
-
最左边的叫高阶位(High-order Bit)或最高有效位(Most Significant Bit),对应的权最大
-
最右边的叫低阶位(Low-order Bit)或最低有效位(Least Significant Bit),对应的权最小
重要概念
- 数码(Digit)
- 构成数的数字
-
数位(Digit Pisition)
-
基数(Base/Radix)
- 决定数码有多少类
- 权(Weight)
二进制数的转换
二进制与十进制
十进制 $\rightarrow$ 二进制
- 整数:用十进制数除以2,反写得出二进制数
- 小数
- 将十进制小数部分乘以2,得到乘积
- 取乘积的整数部分作为二进制结果的一位,将乘积的小数部分继续乘以2
- 重复上步,直到乘积的小数部分为0,或者已经得到了所需位数的二进制结果
二进制到十进制
- 按权按位展开
二进制到八进制和十六进制
- 关系
- 转换技巧
-
整数在前面补零
-
小数在后面补零
- 注意
-
十六进制数码被称为半字节(Nibble)
-
一串数码又称为一个字(Word)
-
小数点前的数字都是整数,后的都是小数,适用于任何进制
二进制数的计算
加减法
-
加法:逢2进1
-
减法: $0-1$,向高位借2
stateDiagram
1 -->0:被借
0 -->1:被借
乘除法
乘法
- $n$位数和$m$位数相乘,得到$(n+m)$位数
除法
- 跟十进制差不多
原码 反码 补码 符号位
- 几种码
分类 | 正数 | 负数 |
---|---|---|
原码 | ~ | 绝对值的原码,再补个符号位1 |
反码 | 与原码相同 | 取反 |
补码 | 与原码相同 | 原码取反+1 |
符号位 | 0 | 1 |
补齐 | 补0 | 补1 |
- 0的补码是0,-128的补码和128的补码相同(8进制)
其他的码
一些码
格雷码
示意图
二进制码与格雷码
stateDiagram
二进制码 --> 格雷码:相邻位XOR,最后一位保留
格雷码 --> 二进制码:相邻位XOR,最后一位保留
要求
- 相邻两个区域只能有$\pmb 1$个位差