scanf() 함수와 산술연산자
10진수, 2진수 변환
-
방법 1
정수 부분 : 2로 나누어 더 이상 나눠지지 않을 때까지 나누고, 나머지를 역순으로 표시함 소수 부분 : 2를 곱한 결과의 정수 부분만을 차례로 표시함
10 진수 21.6을 2진수로 변환하는 것은? 10101.1001
-
방법 2 : 2진수의 자리 값에서 가장 큰 값을 뺌
10 진수 156을 2진수로 변환 시
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
- 156 - 128 = 28
- 28 - 16 = 12
- 12 - 8 = 4
- 4 - 4 = 0
- 방법 3 : C언어를 이용한 2진수 변환
#include <stdio.h>
int main(void){
print("%o \n", 156);
}
결과 : 234 %o는 8진수로 출력하는 서식 문자임
- 156은 8진수로 234
- 2를 3자리 2진수로 변환 : 010
- 3을 3자리 2진수로 변환 : 011
- 4를 3자리 2진수로 변환 : 100
2진수, 8진수, 16진수 상호 변환
10진수 | 8진수 | 16진수 |
---|---|---|
0부터 9까지 사용 | 0부터 7까지 사용 | 0부터 15까지 사용 |
- 16진수 : 9이상의 숫자가 없기 때문에
10을 A,
11을 B,
12를 C, 13을 D, 14를 E, 15를 F 로 표시함
16진수 A4D르르 8진수로 변환
- 16진수 A4D는 2진수로 1010 0100 1101
- 8진수로 변환하려면 아래 자리부터 3자리씩 변환하면 5115가 됨
16진수 : A 4 D 2진수 : 1010 0100 1101 8진수 : 101 001 001 101 => 5 1 1 5
#include <stdio.h>
int main(void){
printf("%o \n", 0xA4D);
}