导航


HTML

CSS

JavaScript

浏览器 & 网络

版本管理

框架

构建工具

TypeScript

性能优化

软实力

算法

UI、组件库

Node

冷门技能

针对性攻坚(TODO)


⭐️ n进制 → 十进制

二进制 → 十进制

将二进制的 101011 转换为十进制的步骤如下:

  1. 第 0 位:1 * 2 ^ 0 = 1;
  2. 第 1 位:1 * 2 ^ 1 = 2;
  3. 第 2 位:0 * 2 ^ 2 = 0;
  4. 第 3 位: 1 * 2 ^ 3 = 8;
  5. 第 4 位:0 * 2 ^ 4 = 0;
  6. 第 5 位:1 * 2 ^ 5 = 32;
  7. 读数:把结果值相加,1 + 2 + 0 + 8 + 0 + 32 = 43,即(101011)B=(43)D。

八进制 → 十进制

八进制就是逢 8 进 1 ,八进制数采用 0~7 这八数来表达一个数

将八进制的 (53)O 转换为十进制的步骤如下:

  1. 第 0 位:3 * 8 ^ 0 = 3;
  2. 第 1 位:5 * 8 ^ 1 = 40;
  3. 读数:结果值相加,3 + 40 = 43;即 (53)O=(43)D。

十六进制 → 十进制

十六进制就是逢 16 进 1 ,十六进制的 16 个数为 0123456789ABCDEF。

将十六进制的 (2B)H 转换为十进制的步骤如下:

  1. 第 0 位 B x 16 ^ 0 = 11; (从 9 往后,A是10,B是11)
  2. 第 1 位 2 x 16 ^ 1 = 32;
  3. 读数:把结果值相加,11 + 32 = 43,即(2B)H=(43)D。

⭐️ 十进制 → n进制

十进制 → 二进制

除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

将十进制的 43 转换为二进制的步骤如下:

  1. 将商 43 除以 2 ,商 21 余数为 1;
  2. 将商 21 除以 2,商 10 余数为 1;
  3. 将商 10 除以 2 ,商 5 余数为 0;
  4. 将商 5 除以 2,商 2 余数为 1;
  5. 将商 2 除以 2,商 1 余数为 0;
  6. 将商 1 除以 2,商 0 余数为 1;
  7. 读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,101011,即(43)D=(101011)B。

Untitled

十进制小数 → 二进制

整数十进制转二进制已经知道了,再来看看小数是怎么转二进制的,小数部分的转换不同于整数部分,它采用的是乘 2 取整法 ,将十进制中的小数部分乘以 2 作为二进制的一位,然后继续取小数部分乘以 2 作为下一位,直到不存在小数为止。

以 8.625 转二进制作为例子:

但并不是所有小数都可以用二进制表示,上边的 0.625 小数是一个特例,刚好通过乘 2 取整法的方式完整的转换成二进制。

接下来我们看看 0.1 的例子:

可以发现, 0.1 的二进制表示是无限循环的。

由于计算机的资源是有限的,所以是没办法用二进制精确的表示 0.1,只能用「近似值」来表示,就是在有限的精度情况下,最大化接近 0.1 的二进制数,于是就会造成精度缺失的情况

十进制 → 八进制

除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

将十进制的(796)D转换为八进制的步骤如下:

  1. 将 796 除以 8,商 99 余数为 4;