2진수 8진수 변환기

이진수

8진수는 Unix 파일 권한(chmod 755), 오래된 PDP 시대의 매뉴얼, 일부 마이크로컨트롤러 툴체인에서 여전히 쓰입니다. 이 변환기는 어떤 2진수 문자열이든 오른쪽부터 비트를 세 개씩 묶고, 각 묶음을 0부터 7 사이의 8진수 자리로 대응시킵니다. 0755를 8진수 리터럴로 취급하는 언어를 위해 앞자리 0을 붙이는 옵션도 제공합니다.

2진수를 8진수로 변환하는 방법

  1. 1

    2진수 값 입력

    공백은 제거됩니다. 길이는 상관없으며, 가장 왼쪽 묶음은 자동으로 세 비트가 되도록 앞에 0이 채워집니다.

  2. 2

    오른쪽부터 세 비트씩 묶기

    `111101100`은 `111 101 100`이 됩니다. 묶는 방향이 중요하며, 항상 오른쪽에서 왼쪽으로 묶습니다.

  3. 3

    세 비트마다 대응시키기

    000 = 0, 001 = 1, 010 = 2, … 111 = 7. 모든 세 비트는 정확히 하나의 8진수 자리로 대응됩니다.

  4. 4

    결과 확인 및 복사

    그대로의 숫자(`754`), 앞자리 0(`0754`), 또는 Python 3 및 Rust 호환 `0o`(`0o754`) 중에서 선택하세요.

세 비트와 8진수 대응표

2진수 8진수
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

예시: Unix 권한

rwxr-xr-x는 소유자에게 읽기/쓰기/실행 권한이 있고, 그룹과 기타 사용자에게는 읽기/실행 권한이 있다는 뜻입니다. 2진수로는 111 101 101이고, 이는 곧바로 8진수 755로 묶입니다. chmod에 전달하는 바로 그 숫자입니다.

8진수가 유용한 경우

  • 파일 권한: chmod 644, umask 022, stat -c %a는 모두 8진수로 표현합니다.
  • 이스케이프 시퀀스: C의 \100@(10진수 64)를 나타내는 8진수입니다.
  • 오래된 기계어 코드: PDP-8, PDP-11과 초기 DEC 문서는 워드 크기가 3비트의 배수였기 때문에 명령 코드를 8진수로 나열합니다.
  • 시각적 명료함: 세 비트 단위 묶음은 16진수처럼 많은 문자를 쓰지 않고도 2진수보다 빠르게 읽힙니다.

주의할 점

  • C에서는 앞자리 0이 8진수를 뜻함: 0755는 8진수 755(= 10진수 493)이고, 755는 10진수 755입니다. 붙여 넣기 전에 사용하는 언어를 확인하세요.
  • JavaScript는 옛 8진수 표기를 없앰: strict 모드는 0755를 거부합니다. 대신 0o755를 사용하세요.
  • 묶는 방향: 왼쪽에서 오른쪽으로 묶으면 길이가 3의 배수가 아닌 비트열에서 잘못된 답이 나옵니다.

자주 묻는 질문

권한 플래그가 역할(소유자, 그룹, 기타)마다 읽기, 쓰기, 실행이라는 깔끔한 세 묶음으로 오기 때문입니다. 세 비트마다 8진수 자리 하나에 1대1로 대응되어 rwxr-xr-x가 한 단계로 755처럼 읽힙니다.

C, Perl, 셸에서는 앞자리 0을 사용하세요. Python 3, Rust, Swift에서는 0o를 사용합니다. 명령줄의 chmod에는 접두사 없이 사용하세요.

음수에는 부호 있는 비트 폭(2의 보수)이 필요합니다. 먼저 비트 폭을 지정하세요. 그렇지 않으면 변환기는 모든 입력을 부호 없는 값으로 취급합니다.

아니요. 변환기가 가장 왼쪽 묶음을 세 비트가 되도록 앞에 0을 채웁니다. 1111001 111이 되고, 8진수로는 17입니다.

관련 도구