Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

리눅스 bc 명령어를 16진수 계산기로 활용하는 방법 – 초간단 명령줄 튜토리얼

리눅스를 비롯한 다양한 유닉스 계열 운영체제, 그리고 GNU 유틸리티가 설치된 거의 모든 환경에는 기본 계산기 언어인 bc가 포함되어 있습니다. bc의 문법은 C 프로그래밍 언어와 매우 유사하며, 무엇보다 명령줄에서 곧바로 16진수 계산기로 활용할 수 있습니다. 덕분에 스마트폰에 별도의 16진수·8진수 계산 앱을 설치해 둘 필요가 없습니다.

개발자는 물론 과제를 수행하는 학생들에게도 반가운 소식입니다. 다만 터미널을 먼저 열어야 한다는 점만 기억하세요. Ctrl + Alt + T를 동시에 누르거나 우분투 Unity Dash에서 "터미널"을 검색하면 됩니다. 시스템 도구(System Tools) 메뉴의 Whisker 또는 응용 프로그램 메뉴에서 실행할 수도 있습니다. macOS 사용자라면 유틸리티 폴더에서 터미널을 열거나, Dock에 고정해 두었다면 클릭 한 번으로 실행할 수 있습니다. bc는 리눅스뿐 아니라 요즘 대부분의 유닉스 계열 운영체제에서 기본으로 제공됩니다.

방법 1: bc로 10진수 ↔ 16진수 변환하기

10진수 127을 16진수로 변환하려면 아래 명령어를 입력하고 Enter를 누릅니다.

echo 'obase=16;127' | bc

결과는 7F입니다. 숫자는 물론 원하는 정수로 자유롭게 바꿔 입력할 수 있습니다. 반대로 16진수를 다시 10진수로 되돌리려면 echo 'ibase=16;obase=A;7F' | bc처럼 입력하면 됩니다. 이렇게 간단해서 언제든 유효한 16진수와 함께 사용할 수 있고, 유닉스 스타일 명령어이기 때문에 셸 스크립트에 넣어 자동화하는 것도 가능합니다. 진법 변환이 필요한 순간마다 명령줄에서 즉석으로 처리할 수 있다는 점이 가장 큰 장점입니다.

방법 2: 2진수 ↔ 16진수 변환하기

명령 프롬프트에 echo 'obase=16;ibase=2;111010001' | bc라고 입력하면 2진수를 16진수로 변환할 수 있습니다. Enter를 누르면 1D1이라는 결과가 반환됩니다. 물론 그 자리에 변환하려는 임의의 2진수를 넣으면 됩니다. 역방향 변환 역시 동일한 원리로 가능합니다. echo 'obase=2;ibase=16;1D1' | bc를 입력하고 Enter를 누르면 처음의 2진수 값이 그대로 되돌아옵니다. 1D1 대신 다른 유효한 16진수를 넣어도 똑같이 동작합니다.

이 방법을 자주 사용할 계획이라면 두 가지를 꼭 기억해 두세요.
첫째, 16진수에 포함된 알파벳 문자(A~F)는 반드시 대문자로 입력해야 합니다. bc는 소문자를 대수 변수로 해석하기 때문입니다.
둘째, 이 모든 명령어는 일반 사용자 권한으로 실행할 수 있으며, 최신 리눅스나 유닉스 환경에서 root 권한은 필요하지 않습니다.

방법 3: bc를 완전한 16진수 계산기로 활용하기

bc는 단순한 진법 변환기를 넘어 16진수 산술 연산까지 처리할 수 있습니다. 일반 사용자에게는 잘 쓰이지 않지만, 프로그래머라면 서로 다른 두 메모리 주소의 차이를 계산해야 할 때가 종종 있습니다. 중·고등학교와 대학의 컴퓨터과학 과제에서도 단골로 등장하는 문제 유형이기도 합니다.

예를 들어 16진수 EE65522D에서 C3EFAF86을 빼고 싶다면 echo 'ibase=16;EE65522D-C3EFAF86' | bc를 입력하고 Enter를 누릅니다. 결과를 16진수로 받고 싶다면 echo 'obase=16;ibase=16;EE65522D-C3EFAF86' | bc처럼 obase까지 함께 지정해 주면 됩니다.

다른 산술 연산도 모두 지원됩니다. 예컨대 echo 'obase=16;ibase=16;EE65522D*C3EFAF86' | bc는 두 값을 곱하며, 덧셈에는 + 연산자를 사용하면 됩니다. 다만 나눗셈(/)은 나머지를 반환하지 않으므로, 나머지가 필요하다면 % 연산자(모듈로)를 사용해야 합니다.

예를 들어 echo 'obase=16;ibase=16;EE65522D%C3EFAF86' | bc를 실행하면 2A75A2A7이 반환됩니다. 이는 해당 연산의 몫이 1이고 나머지가 2A75A2A7이기 때문입니다. 몫과 나머지를 모두 확인하려면 / 연산자를 먼저 실행한 뒤 % 연산자를 차례로 실행하면 됩니다.

마무리

별도의 프로그램 설치 없이 터미널에 이미 들어 있는 bc 명령어만으로 진법 변환과 16진수 연산을 모두 처리할 수 있습니다. 위 명령어들을 몇 번 직접 실행해 보면 금방 감이 잡히니, 업무나 과제에서 16진수를 다룰 일이 생긴다면 적극적으로 활용해 보시길 권합니다.

저자 소개

리눅스 bc 명령어를 16진수 계산기로 활용하는 방법 – 초간단 명령줄 튜토리얼

Kevin Arrows

Kevin Arrows는 10년 이상의 업계 경력을 지닌 베테랑 기술 전문가입니다. Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있으며, 최신 기술 동향을 꾸준히 학습하는 데 남다른 열정을 가지고 있습니다. 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 폭넓은 IT 분야의 글을 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 풀어내는 필력으로 동료들에게 폭넓은 인정을 받고 있습니다.