Bu araç, 2 ile 16 arası herhangi bir sayı tabanı arasında dönüşüm yapmanızı sağlar. Örneğin ondalık (10) tabanında bir sayıyı ikilik (2), sekizlik (8) veya onaltılık (16) tabana çevirebilirsiniz. Onaltılık taban için A-F harfleri kullanılır.
Sayı tabanı, bir sayı sisteminde kullanılan rakam sayısıdır. Örneğin:
Algoritma: Her basamağı, tabanın üssü ile çarpıp topla
// Örnek: 1010₂ (ikilik) → ondalık
// 1×2³ + 0×2² + 1×2¹ + 0×2⁰
// = 8 + 0 + 2 + 0 = 10
function toDecimal(number, base) {
let decimal = 0;
for (let i = 0; i < number.length; i++) {
const digit = charToDigit(number[i]);
const power = number.length - 1 - i;
decimal += digit * Math.pow(base, power);
}
return decimal;
}
Örnek Hesaplama:
// FF₁₆ (onaltılık) → ondalık
// F = 15, F = 15
// 15×16¹ + 15×16⁰ = 240 + 15 = 255
charToDigit('F') // 15
charToDigit('F') // 15
15 * 16^1 + 15 * 16^0 = 255
Algoritma: Bölme ve kalan (remainder) yöntemi
// Örnek: 255₁₀ → ikilik
// 255 ÷ 2 = 127, kalan 1 ← (en sağ basamak)
// 127 ÷ 2 = 63, kalan 1
// 63 ÷ 2 = 31, kalan 1
// ... devam eder
// Sonuç: 11111111₂
function fromDecimal(decimal, base) {
let result = '';
let number = decimal;
while (number > 0) {
const remainder = number % base;
result = digitToChar(remainder) + result;
number = Math.floor(number / base);
}
return result || '0';
}
Adım Adım Örnek:
// 255₁₀ → 16'lık taban
255 % 16 = 15 (F) → result = "F"
255 / 16 = 15
15 % 16 = 15 (F) → result = "FF"
15 / 16 = 0 → DUR
// Sonuç: FF₁₆
Karakter → Sayı:
function charToDigit(char) {
if (char >= '0' && char <= '9') {
return parseInt(char, 10); // '5' → 5
} else if (char >= 'A' && char <= 'F') {
return 10 + (char.charCodeAt(0) - 'A'.charCodeAt(0));
// 'A' → 10, 'B' → 11, ..., 'F' → 15
}
return -1; // Geçersiz karakter
}
Sayı → Karakter:
function digitToChar(digit) {
if (digit < 10) {
return digit.toString(); // 5 → '5'
} else {
// 10 → 'A', 11 → 'B', ..., 15 → 'F'
return String.fromCharCode('A'.charCodeAt(0) + (digit - 10));
}
}
Herhangi bir tabandan herhangi bir tabana dönüşüm için iki aşama:
// Örnek: 4'lük taban → 8'lik taban
// "123"₄ → ondalık → "27"₈
// 1. Adım: 4'lük → Ondalık
// 1×4² + 2×4¹ + 3×4⁰ = 16 + 8 + 3 = 27
// 2. Adım: Ondalık → 8'lik
// 27 ÷ 8 = 3, kalan 3 → "3"
// 3 ÷ 8 = 0, kalan 3 → "33"
// Sonuç: "33"₈