컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Monday, September 18, 2006

펄/Perl] 2진수 변환/출력, 10진수를 이진수로 - printf 함수 - Binary


이진수를 영어로는 binary 또는 base-2 라고 합니다.

다음과 같은 방법으로 이진수를 변환 출력할 수 있습니다.


10진수/16진수를 2진수로 변환 출력 예제


#!/usr/bin/perl
use strict; use warnings;

########################################################################
# 8비트 2진수
########################################################################

# 8비트 최대값: 255 = 0xFF (2진수를 다룰 때는 이렇게 16진수를 사용하는 것이 편리합니다.)
printf "%b\n", 0xFF; # 출력: 11111111
printf "%#b\n", 0xFF; # 출력: 0b11111111

# 최소값인 0을 출력
printf "%08b\n", 0; # 출력: 00000000


########################################################################
# 16비트 2진수
########################################################################

# 16비트 최대값: 65535 = 0xFFFF
printf "%016b\n", 0xFFFF; # 출력: 1111111111111111
printf "%#016b\n", 0xFFFF; # 출력: 0b1111111111111111

# 최소값인 0을 출력
printf "%016b\n", 0; # 출력: 0000000000000000

########################################################################
# 32비트 2진수
########################################################################

# 32비트 최대값: 4294967295 = 0xFFFFFFFF
printf "%032b\n", 0xFFFFFFFF; # 출력: 11111111111111111111111111111111
printf "%#032b\n", 0xFFFFFFFF; # 출력: 0b11111111111111111111111111111111

# 최소값인 0을 출력
printf "%#032b\n", 0x00000000; # 출력: 00000000000000000000000000000000




########################################################################
# 테스트
########################################################################

# 십진수 525323232 를 이진수로
printf "%032b\n", 525323232; # 출력: 00011111010011111100101111100000


my $s = sprintf "%032b\n", 525323232; # 2진수 문자열로 변환
print $s, "\n"; # 변환 후 출력



printf 함수에 "%b" 이런 포맷을 사용하면, 10진수/16진수 등이, 2진수로 출력됩니다.

펄에서, 2진수 상수는 앞에 0b 이런 문자열이 붙습니다. 제로+소문자b 입니다. 포맷 속에 샤프(#) 를 사용하면 자동으로 0b 가 붙습니다. 펄의 주석 기호도 #인데 좀 혼란스럽군요. 그렇지만 펄은 그런 혼란을 즐기는 언어이겠지요.

펄의 변수에는 정수 실수 구분도 없고, 8비트 정수니 16비트 정수니 하는 것도 없습니다. 따라서 어떤 숫자를 몇 비트 이진수로 변환할 것인지 지정해 주어야 합니다.

"%032b" 이런 포맷을 사용하면, 그 숫자를 32비트 정수로 간주하여 이진수로 출력하고, 앞의 빈자리는 0으로 채웁니다.

숫자 1을, 32비트 이진수로 바꾸면
00000000000000000000000000000001
이렇게 나옵니다.




▶▶ 펄/Perl] 10진수를 16진수(헥사;Hex)로 출력/변환 함수와 방법


16진법 2진법 10진수, 아스키 유니코드 상호 변환기: ▶▶ 16진수 헥사, 2진수, 10진수, 8진법 변환 계산기; Hex Calc

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top