Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

컴퓨터공학 01. 기수법

08 Mar 2019 » 컴퓨터공학

2019.03.08 TIL

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

오늘의 한마디:

지금 내 상황을 객관적으로 바라보고, 반성하자.

지금 온전히 집중할 수 있는 지금 이 순간이 내 인생의 최고이다.

if you think you can or if you think you can’t you are right.

기수법

프로그램에서 쓰는 수는
10진수(사람을 위한 수) 0,1,2,3,4,5,6,7,8,9 2진수( 컴퓨터를 위한) 0,1
16진수 ( 2진수를 더 쉽게 쓰기 위해) 0,1,2,3,4,5,6,7,8,9,10, a, b, c, d, e, f,
8진수(리눅스 등에서 씀)
각각 변환하는 것을 먼저 잘 할 수 있어야 한다.

계산기에 프로그래머 계산기가 있음
dec - 10진수
hex - 16진수
oct - 8진수
bin - 2진수

1. 10진수를 2진수로 바꾸는 방법

예를 들어서 설명해보자
50을 2진수로 바꾸어 보자

먼저 2의 제곱 중에 50에 가장 가까운 수를 찾는다. 2 ** 5 = 32

이후 남은 18에 가장 가까운 2의 제곱을 찾는다. 2 ** 4 == 16

남은 2에 대해 가장 가까운 2의 제곱 2 ** 1 = 2

이상 해결

이걸 직관적으로 적어보면

32 + 16 + 2 —–> 220010 (2)

ex)

  • 47 —> 2 ** 5 (32) + 2 ** 3 (8) + 2 ** 2(4) + 2 ** 1(2) + 1 ===> 101111(2)

a = 0b1010 —> 2진수 표현 방법 hex(a) —> a를 16진수로 변환

c = 0xaf —> 16진수 표현 방법 bin(c)

2. 2진수를 10진수로 바꾸는 방법

2진수 위에 

6543210 이렇게 숫자를 적는다. 

1010110(2)   -------> 64 + 16 + 4 + 2 = 86

예)

543210

110010(2)    --------> 32 + 16 + 2 ===> 50
  1. 16진수를 2진수로 바꾸는 방법 16진수

0123456789abcdef

외워야 하는 것

a = 1010(2)
b = 1011(2)
c = 1100(2)
d = 1101(2)
e = 1110(2)
f = 1111(2)

16진수가 나오면 꼭 2개로 나누어서 2진법을 표현하자!!

ex ) fa(16) —> 1111 1010(2)

ex) 74(16) —> 0111 0100(2) #제일 앞에 의미 없는 0도 적어주면 좋다.

ex) 8d(16) —-> 1000 1101(2)

4. 2진수를 16진수로 바꾸는 방법

뒤에서 부터 4개씩 끊어준다. 그리고 그것을 하나씩 16진수로 바꾸어 준다.

제일 앞에 부족한 것은 00으로 채워준다.

1101110001(2) —-> 0011/0111/0001 —–> 3 7 1 (16)

1011110101(2) —–> 0010/1111/0101 —–> 2 f 5 (16)

100011110111(2) —–> 1000/1111/0111 —–> 8 f 7(16)