진법 변환기 - 2진법, 8진법, 10진법, 16진법 변환 온라인
2진법, 8진법, 10진법, 16진법 간 숫자 변환. 인터랙티브 비트 시각화 및 비트 연산 계산기.
자주 묻는 질문
진수 변환기란 무엇인가요?
진수 변환기는 서로 다른 진법(기수) 체계 간에 숫자를 변환하는 도구입니다. 컴퓨팅에서 가장 일반적인 진법은 2진수(0과 1 사용), 8진수(0-7 사용), 10진수(0-9 사용), 16진수(0-9와 A-F 사용)입니다. 각 진법은 동일한 수치를 다르게 표현합니다. 예를 들어, 10진수 255는 2진수로 11111111, 8진수로 377, 16진수로 FF입니다.
이 진수 변환기는 어떻게 사용하나요?
네 개의 입력 필드(2진수, 8진수, 10진수, 16진수) 중 아무 곳에나 숫자를 입력하면 나머지 필드가 즉시 변환된 값으로 업데이트됩니다. 아래의 비트 시각화를 사용하여 개별 비트를 확인하고 상호작용할 수 있습니다. 비트를 클릭하여 켜거나 끌 수 있습니다. 필요에 따라 비트 폭(8/16/32/64)과 부호/무부호 모드를 조정하세요.
데이터가 안전한가요? 서버로 전송되는 것이 있나요?
모든 숫자 변환과 비트 조작은 JavaScript를 사용하여 100% 브라우저에서 수행됩니다. 어떤 데이터도 서버로 전송되지 않습니다. 이 도구는 정밀한 계산을 위해 브라우저 내장 BigInt를 사용합니다. 숫자가 디바이스를 떠나지 않으므로 메모리 주소나 보안 관련 숫자 변환에도 안전합니다.
2의 보수란 무엇이고 부호 모드는 어떻게 작동하나요?
2의 보수는 컴퓨터가 음수 정수를 이진수로 표현하는 표준 방법입니다. 부호 모드에서 최상위 비트(가장 왼쪽)가 부호 비트로 작동합니다: 0은 양수, 1은 음수입니다. 예를 들어, 8비트 부호 모드에서 11111111은 -1(255가 아님)을 나타내고, 10000000은 -128을 나타냅니다.
비트 연산이란 무엇이고 언제 유용한가요?
비트 연산은 숫자의 개별 비트를 직접 조작합니다. AND(&)는 특정 비트 마스킹, OR(|)는 비트 설정, XOR(^)는 비트 토글, NOT(~)은 모든 비트 반전, 시프트 연산자(<<, >>)는 2의 거듭제곱으로 곱하기/나누기에 사용됩니다. 시스템 프로그래밍, 네트워크 프로토콜, 그래픽 프로그래밍, 암호화 등에 필수적입니다.
16진수에서 왜 A-F 문자를 사용하나요?
16진수(base 16)는 16개의 고유 숫자가 필요합니다. 10진수 체계에서는 0-9까지 10개의 기호만 제공하므로, 16진수에서는 10~15를 나타내기 위해 A~F 문자를 사용합니다. 각 16진수 자릿수는 정확히 4개의 이진 비트(니블)에 대응하므로 FF = 11111111 = 255입니다.
비트 폭은 어떻게 선택하나요?
작업하는 데이터 유형에 따라 비트 폭을 선택하세요: 바이트와 ASCII 문자에는 8비트(범위 0-255), 짧은 정수와 유니코드 BMP 문자에는 16비트(범위 0-65535), 표준 정수, IPv4 주소, 색상 값에는 32비트(범위 0-42.9억), 큰 정수, 메모리 주소, 타임스탬프에는 64비트를 사용합니다. 확실하지 않으면 대부분의 일반적인 사용 사례를 커버하는 32비트를 사용하세요.
코드 예제
// Number base conversion in JavaScript
// Convert between bases
function convertBase(number, fromBase, toBase) {
const decimal = BigInt(parseInt(number, fromBase));
return decimal.toString(toBase).toUpperCase();
}
console.log(convertBase('FF', 16, 2)); // "11111111"
console.log(convertBase('11111111', 2, 16)); // "FF"
console.log(convertBase('255', 10, 8)); // "377"
// Bitwise operations
const a = 0b11001010, b = 0b10110001;
console.log(`AND: ${(a & b).toString(2).padStart(8, '0')}`);
console.log(`OR: ${(a | b).toString(2).padStart(8, '0')}`);
console.log(`XOR: ${(a ^ b).toString(2).padStart(8, '0')}`);
console.log(`NOT: ${((~a) & 0xFF).toString(2).padStart(8, '0')}`);
// Two's complement
function toTwosComplement(value, bits) {
if (value >= 0) return value;
return (1 << bits) + value;
}
console.log(toTwosComplement(-1, 8).toString(2)); // "11111111"