算法

进制转换通法

有童yt_hy · 6月12日 · 2025年 · · · 本文共801个字 · 预计阅读3分钟 1118次已读

转换为十进制

转换为十进制的方法就是使用((每一位数乘以进制的权重次幂)的和),公式即:

\(
\text{十进制值} = d_n \cdot b^n + d_{n-1} \cdot b^{n-1} + \dots + d_1 \cdot b^1 + d_0 \cdot b^0
\)

公式看起来有点抽象,那就先举例8进制135:

\(
5×8^0+3×8^1+1×8^2=93
\)

那么8进制的135就是93

那如果是16进制135呢?

\(
5×16^0+3×16^1+1×16^2=309
\)

那么16进制的135就是309

十进制转换为其他进制

十进制转换为其他进制的方法是不断用进制除以原数直到商为0,倒叙排列余数

比如10进制的135转换为8进制,那么就是:

135÷8=16 余7 16÷8=2 余0 2÷8=0 余2

那么10进制的135转换为8进制就是207

如果10进制的135转换为16进制,那么就是:

135÷16=8 余7

8÷16=0 余8

那么10进制的135转换为16进制就是87

程序员计算器

目前微软自带的新老计算器都内置了程序员模式,可以非常方便地快速计算.至于苹果十年磨一剑的计算器似乎目前还暂时没有支持.

Sign Magnitude Representation原码

第一位用0表示正数,1表示负数,后面的是数的绝对值大小.

缺点:同时包含+0和-0两种,浪费了空间

Two’s Complement Representation补码

正数表示与原码相同,但是负数通过对其绝对值的二进制形式进行“取反加一”得到.

也就是说-6的补码形式为00000110,取反11111001,加一11111010.

在将二进制补码转换为十进制时,最大的幂项的 2 必须取负值,也就是说:11111010转换为十进制

(我这里不想列式子了,偷个懒,1111010转换为十进制为122,然后再减去1×2^7也就是减去128就是-6了)