2진수 8진수 변환기

이진수

8진수는 Unix 파일 권한(chmod 755), 오래된 PDP 시대의 매뉴얼, 일부 마이크로컨트롤러 툴체인에서 여전히 쓰입니다. 이 변환기는 어떤 2진수 문자열이든 오른쪽부터 비트를 세 개씩 묶고, 각 묶음을 0부터 7 사이의 8진수 자리로 대응시킵니다. 출력은 접두사가 없는 8진수 자릿수입니다. 0755처럼 앞자리 0이 필요한 언어나 0o755처럼 0o 접두사가 필요한 언어에서는 직접 붙이세요.

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`처럼 접두사가 없는 8진수 자릿수입니다. 대상 언어에 앞자리 0(`0754`)이나 `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의 보수)이 필요하며, 이 변환기에는 폭 옵션이 없어 모든 입력을 부호 없는 값으로 취급합니다. 음수 값을 변환하려면 먼저 고정 폭의 2의 보수 비트 패턴으로 적은 뒤 그 패턴을 변환하세요.

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

관련 도구

이 도구는 다른 언어로도 제공됩니다