进制转换及C语言中进制转换方法

进制转换是计算机科学和数学中的基础操作,主要用于不同数制之间的数值表示转换。以下是常见进制(二进制、八进制、十进制、十六进制)的转换方法及示例:


一、其他进制 → 十进制

方法:按权展开,逐位相加。
公式
[ \text{十进制值} = \sum (每一位数值 \times 基数^{\text{位权}}) ]

示例

  1. 二进制 → 十进制
    ( 1011_2 = 1×2^3 + 0×2^2 + 1×2^1 + 1×2^0 = 8 + 0 + 2 + 1 = 11_{10} )

  2. 十六进制 → 十进制
    ( 2A_{16} = 2×16^1 + 10×16^0 = 32 + 10 = 42_{10} )


二、十进制 → 其他进制

方法:除基取余法(整数部分)或乘基取整法(小数部分),倒序排列余数。

1. 整数部分转换(除基取余)

步骤

  1. 用十进制数除以目标进制基数,记录余数。
  2. 将商继续除以基数,直到商为0。
  3. 余数倒序排列即为结果。

示例
将 ( 25_{10} ) 转换为二进制:
[
\begin{align*}
25 ÷ 2 &= 12 \ \text{余} \ 1 \
12 ÷ 2 &= 6 \ \ \ \text{余} \ 0 \
6 ÷ 2 &= 3 \ \ \ \text{余} \ 0 \
3 ÷ 2 &= 1 \ \ \ \text{余} \ 1 \
1 ÷ 2 &= 0 \ \ \ \text{余} \ 1 \
\end{align*}
]
倒序排列余数:( 11001_2 )

2. 小数部分转换(乘基取整)

步骤

  1. 用小数部分乘以目标进制基数,记录整数部分。
  2. 取结果的小数部分继续乘以基数,直到小数部分为0或达到精度要求。
  3. 整数部分正序排列即为结果。

示例
将 ( 0.625_{10} ) 转换为二进制:
[
\begin{align*}
0.625 × 2 &= 1.25 \quad \text{取整} \ 1 \
0.25 × 2 &= 0.5 \quad \ \ \text{取整} \ 0 \
0.5 × 2 &= 1.0 \quad \ \ \text{取整} \ 1 \
\end{align*}
]
正序排列整数部分:( 0.101_2 )


三、非十进制之间的直接转换

1. 二进制 ↔ 八进制/十六进制
  • 二进制 → 八进制:每 3位 二进制为一组,转换为1位八进制(不足补零)。
    示例
    ( 101\ 110_2 ) → ( 5_8 \ 6_8 = 56_8 )

  • 二进制 → 十六进制:每 4位 二进制为一组,转换为1位十六进制(不足补零)。
    示例
    ( 1101\ 0110_2 ) → ( D_{16} \ 6_{16} = D6_{16} )

  • 反向转换:将八进制/十六进制每一位展开为3/4位二进制。
    示例
    ( 3F_{16} = 0011\ 1111_2 )

2. 八进制 ↔ 十六进制

需以二进制或十进制为中间桥梁。
示例
( 75_8 → 111\ 101_2 → 0011\ 1101_2 → 3D_{16} )


四、进制表示符号

  • 二进制:前缀 0b(如 0b1010
  • 八进制:前缀 0(如 017
  • 十六进制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值