一、二进制
二进制是一种用0和1表示数字的进制。它是计算机内部数据的基础表示方法。
// 二进制转十进制的示例代码
function binaryToDecimal(binary) {
let decimal = 0;
for (let i = 0; i < binary.length; i++) {
decimal += Number(binary[i]) * Math.pow(2, binary.length - i - 1);
}
return decimal;
}
以上代码是将二进制转为十进制的实现。需要注意的是,在计算机中,二进制数可以用前缀0b来表示。
二、八进制
八进制是一种用0~7表示数字的进制。在现代计算机中不太常用,但在Unix、Linux等系统的文件权限中经常使用到。
// 八进制转十进制的示例代码
function octalToDecimal(octal) {
let decimal = 0;
for (let i = 0; i < octal.length; i++) {
decimal += Number(octal[i]) * Math.pow(8, octal.length - i - 1);
}
return decimal;
}
注意,在计算机中,八进制数可以用前缀0来表示。
三、十六进制
十六进制是一种用0~9及A~F(大小写不敏感)表示数字的进制。它在计算机中广泛使用,因为它可以用更少的位数表示同样的数值,并且更便于人类阅读。
// 十六进制转十进制的示例代码
function hexToDecimal(hex) {
let decimal = 0;
for (let i = 0; i = '0' && digit = 'a' && digit = 'A' && digit <= 'F') {
decimal += (digit.charCodeAt(0) - 55) * Math.pow(16, hex.length - i - 1);
}
}
return decimal;
}
计算机中,十六进制数可以用前缀0x表示。
四、进制间转换
进制间转换需要了解每种进制数的表示方法以及位权的定义。以下提供进制间转换的示例代码。
十进制转其他进制:
function decimalToBinary(decimal) {
let binary = '';
while (decimal !== 0) {
binary = (decimal % 2) + binary;
decimal = Math.floor(decimal / 2);
}
return binary;
}
function decimalToOctal(decimal) {
let octal = '';
while (decimal !== 0) {
octal = (decimal % 8) + octal;
decimal = Math.floor(decimal / 8);
}
return octal;
}
function decimalToHex(decimal) {
let hex = '';
while (decimal !== 0) {
let digit = decimal % 16;
if (digit < 10) {
hex = digit + hex;
} else {
hex = String.fromCharCode(digit + 55) + hex;
}
decimal = Math.floor(decimal / 16);
}
return hex;
}
其他进制转十进制:
function binaryToDecimal(binary) {
let decimal = 0;
for (let i = 0; i < binary.length; i++) {
decimal += Number(binary[i]) * Math.pow(2, binary.length - i - 1);
}
return decimal;
}
function octalToDecimal(octal) {
let decimal = 0;
for (let i = 0; i < octal.length; i++) {
decimal += Number(octal[i]) * Math.pow(8, octal.length - i - 1);
}
return decimal;
}
function hexToDecimal(hex) {
let decimal = 0;
for (let i = 0; i = '0' && digit = 'a' && digit = 'A' && digit <= 'F') {
decimal += (digit.charCodeAt(0) - 55) * Math.pow(16, hex.length - i - 1);
}
}
return decimal;
}
五、进制的应用
进制数广泛应用于计算机领域,如IP地址、MAC地址、文件权限等。
例如,在IP地址中,为了方便运算和保存,将四个八位的二进制数转换为十进制数表示。
以下是获取本机IP地址的示例代码:
const os = require('os');
const ifaces = os.networkInterfaces();
Object.keys(ifaces).forEach(function (ifname) {
let alias = 0;
ifaces[ifname].forEach(function (iface) {
if ('IPv4' !== iface.family || iface.internal !== false) {
return;
}
if (alias >= 1) {
console.log(ifname + ':' + alias, iface.address);
} else {
console.log(ifname, iface.address);
}
++alias;
});
});
以上代码是使用Node.js获取本机IP地址的实现。获取到的地址为十进制表示。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/159846.html