HJ5 进制转换

6 阅读2分钟

进制转换_牛客网

进制转换是数字系统中常见的一种操作,特别是在计算机科学和电子工程领域。以下是常见进制转换的方法:

1. 二进制转换为十进制

要将二进制数转换为十进制数,可以将二进制数的每一位与该位的权值相乘,然后将这些值相加。例如:

二进制数:1011
权值:1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
计算:8 + 0 + 2 + 1 = 11
十进制结果:11

2. 十进制转换为二进制

将十进制数转换为二进制数,可以通过短除法来实现,即不断除以2并记录余数。例如:

十进制数:13
13 ÷ 2 = 61
6 ÷ 2 = 30
3 ÷ 2 = 11
1 ÷ 2 = 01
二进制结果:1101

3. 二进制转换为八进制

二进制转换为八进制时,通常每三位二进制数转换为一位八进制数。例如:

二进制数:1001101
分组:100 110 1
八进制数:4 6 1
八进制结果:461

4. 八进制转换为二进制

八进制转换为二进制,每位八进制数转换为三个二进制位。例如:

八进制数:461
转换:4100, 6110, 1001
二进制结果:1001101

5. 二进制转换为十六进制

二进制转换为十六进制时,每四位二进制数对应一位十六进制数。例如:

二进制数:10011011
分组:1001 1011
十六进制数:9 B
十六进制结果:9B

6. 十六进制转换为二进制

每位十六进制数转换为四个二进制位。例如:

十六进制数:9B
转换:91001, B → 1011
二进制结果:10011011

示例代码

以下是一些在javaScript中进行进制转换的示例代码:

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator](); 
const readline = async () => (await iter.next()).value; 
void (async function () { 
    // Write your code here 
    let str = await readline() 
    const map = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 }; 
    const d = (n) => (n < 10 ? n : map[n]); 
    let n = 0; 
    const max = str.length - 1; 
    for (let i = max; i > 1; i--) { 
        n += d(str[i]) * 16 ** (max - i); 
    } 
    console.log(n); 
})();