一、二進位
二進位是一種用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/zh-tw/n/159846.html