求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,a,b,...,f)。
时间: 2023-08-31 22:02:13 浏览: 83
MFC 各中类型转换str >> hex >> dec >>str
### 回答1:
假设要将一个n进制的非负整数x转换为m进制的非负整数y,可以按照以下步骤进行:
1. 将x转换为10进制的数a,可以使用以下公式:
a = xn-1 * n^(n-1) + xn-2 * n^(n-2) + ... + x1 * n^1 + x * n^
其中,xn-1到x是x在n进制下的各位数字。
2. 将a转换为m进制的数b,可以使用以下公式:
b = bm-1 * m^(m-1) + bm-2 * m^(m-2) + ... + b1 * m^1 + b * m^
其中,bm-1到b是a在m进制下的各位数字。
举个例子,假设要将二进制数1011转换为十六进制数,可以按照以下步骤进行:
1. 将1011转换为10进制的数a:
a = 1 * 2^3 + * 2^2 + 1 * 2^1 + 1 * 2^ = 8 + + 2 + 1 = 11
2. 将11转换为十六进制的数b:
b = 1 * 16^ + 1 * 16^1 = 17
因此,二进制数1011转换为十六进制数17。
### 回答2:
要将一个十进制数转换为其他进制,可以使用除法和取余的方法。
比如将一个十进制数37转换为二进制数:将37不断除以2,直到商为0为止,取每一步的余数(0或1),然后逆序排列得到二进制数的各位数字,即为100101。
同理,要将一个二进制数转换为十进制数,可以将二进制数的每一位数字与相应的权重相乘(权重是2的指数递增),再将乘积相加得到十进制数。
对于十六进制数,由于不同进制中需要表示的数字超出了十进制的范围(10-15),所以用字母a-f代替。
举例来说,将十进制数37转换为十六进制数:将37不断除以16,直到商为0为止,取每一步的余数(0-15),然后逆序排列得到十六进制数的各位数字,即为25。
同理,要将一个十六进制数25转换为十进制数,可以将十六进制数的每一位数字与相应的权重相乘(权重是16的指数递增),再将乘积相加得到十进制数。
总结起来,无论是将一个非负整数转换为任意进制,还是将一个任意进制的数转换为十进制,只需要使用除法、取余和相乘的方法,可以很方便地完成转换。
### 回答3:
要将一个十进制整数转换为其他进制,可以使用除法取余法。
以将一个十进制整数转换为二进制为例:
1. 将十进制整数除以2,得到商和余数。
2. 将得到的余数作为二进制数的最低位。
3. 将商继续除以2,重复上述步骤,直到商为0,得到的余数按照逆序排列,即为该十进制整数的二进制表示。
例如,将十进制整数15转换为二进制:
15 ÷ 2 = 7,余数为1
7 ÷ 2 = 3,余数为1
3 ÷ 2 = 1,余数为1
1 ÷ 2 = 0,余数为1
按逆序排列得到的余数为1111,即15的二进制表示为1111。
将其他进制的整数转换为十进制,可以使用乘法法则。
以将一个八进制整数转换为十进制为例:
1. 将八进制整数的每一位与对应的权重相乘,然后求和。
2. 权重从右往左依次为8的0次方、8的1次方、8的2次方...
例如,将八进制整数123转换为十进制:
1×8^0 + 2×8^1 + 3×8^2 = 1 + 16 + 192 = 209
所以八进制数123的十进制表示为209。
对于十六进制的转换,方法与上述相似,只是权重为16的幂次方。
以上是将十进制转换为其他进制和将其他进制转换为十进制的基本方法。根据这些方法,可以将任意两个不同进制的非负整数进行转换。
阅读全文