반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

공머씨의 블로그

내가 공부한 논리회로 2. Number system 1(수 체계) 본문

내가 공부한 3학기 전공/내가 공부한 논리회로 설계

내가 공부한 논리회로 2. Number system 1(수 체계)

공머씨 2020. 3. 18. 21:11
반응형

Number system
 
넘버 시스템은 수체계라고 하는 것이다.
십진법 이진법, 팔진법
임의의 R진법에 대해서도 공부해본다.
 
여러 가지 진법과 이것들 간의 상호변환에 대해서
알아보려고 한다.
 

1. 수의 탄생

카운트하기 위해
 

1-1 고대의 수체계

1)바빌로니아인: 

60진법을 사용했다.
 

2)고대 로마:

5진법
로마 숫자에서 226을 나타내 보자.

  • 200인 경우 cc로
  • 20 xx(10을 나타내는 X를 2개)
  • 6을 나타내기 위해서는 5를 나타내는 v와 1을 나타내는 I를 함께 나타냄
  • CCXXVI>>226을 나타내는 로마 숫자.

>> 숫자의 단위가 커질수록 문자가 너무 길어진다는 단점이 있다.
 

3) 아라비아 숫자라고 알려진 10진법에 대하여

아랍>>중동을 이야기
중동국가는 과거부터 무역을 주 생업 으로 했다.
사실은 인도 사람들이 10진법을 처음 사용한 것이 밝혀진이후 인도아라비아 숫자라고 한다.
 
우리가 잘 알고 있는 1,2,3... 의 숫자이다.

4) 12진수

유럽, 미국에서 현재까지 혼용해서 사용된다.
12진법의 형태: 음악에서 3박자, 셋잇단 음표, 달력. 12 간지 
 영국에서 쓰이는 다음과 같은 단위 (12라인=1인치, 12인치=1 풋, 12온스=1파운드)
약수가 많다는 특징이 있다.
12진법이 많이 사용된 이유는 약수가 많기 때문이다. 등분하기가 편했기 때문이다.
 

2. 수의 표현

 

2-1. 실생활에서의 표현 Decimal number(10진수)

  • Deci가 10을 나타내는 접두사이다.
  • Base=radix
  • 10진수에서의 Base는 10이다.
  • 10을 단위로 뭔가가 count 된다고 생각하면 된다.
  • Elements: 0 1 2 3 4 5 6 7 8 9
  • 9까지 카운트한 다음에 자릿수가 올라간다.

 
위 그림과 같이 방한 칸에 들어갈수있는 숫자는 9까지 이다.

 
일의자리에 1을 더하면 9는 0으로 바뀌고 십의자리에 1이 생긴다. 이걸 자리올림이라고 한다.
앞으로 진법을 배우는 동안 10진수 표현: 97 오른쪽 아래 부분에 작은 첨자로 10을 쓴다.

사람이 사용하기 제일 편하다.>> 손가락이 10개인 경우가 많기 때문에
 

2-2. 디지털 시스템에서는  High or low만 있다.

이 두 가지 logic을 구별하기 위한 것이 2진수이고 , 우리가 Binary number이라고 한다.
Binary 에는 '이진법의' 라는 뜻도 있지만 '두부분으로 이루어진' 이라는 뜻도 있다.
 

  • 두개로 이루어진 숫자 0,2 가 2진수 이고 이런 수체계를 2진법이라고 한다.
  • Base: 2
  • Elements: 0,1
  • 2진수에서는 0과 1만 사용한다.

큰 숫자를 나타내면 자릿수가 빨리 올라가므로 너무 길어진다는 단점이 있다.
'자릿수가 빨리 올라가므로'의 의미는 아래 표를 보면 알 수있다.
* 21.10.15 내용일부 수정했습니다.
수정내용: 10진법3 ~10진법 5 를 2진법으로 바꾸는 칸

10진법2진법
00
11
210
311
4100
5101


위와 같이 십진법에서는 아직 자릿수가 하나인데 이진법에서는 자릿수가 3개이다.  >>0과 1밖에 없으므로 자릿수가 빨리 올라간다.
 
예를 들어 십진수 1023을 나타내려면
1111111111 이렇게 된다. (1이 10개)
 
1024가 2의 10승이라서 
1024를 2진수로 나타내면
1023을 2진수로 나타낸 것보다 한 자릿수 올라가게 된다.
10000000000(0이 10개)
 
>> '10진수에서 2의 n승의 숫자를 이진수로 바꾸면 0이 n개가 있다' 는 것을 알 수있습니다.
(맨앞에 있을 1까지 생각하면 2의n승의 자릿수는 n+1개 임을 알 수 있습니다.)
 
11에서 100으로 자릿수가 바뀌는 것을 더 길어진 숫자로 확장(?)해보면 다음 그림과 같습니다.

 

2-3. System에서 효율적으로 표현하려면 8진수와 16진수가 필요하다.

Octal number(8진수)

  • Oct는 8을 나타내는 접두사이다.
  • Base: 8
  • Elements: 0,1,2,3,4,5,6,7
  • 표현법: 오른쪽에 아래 첨자로 8을 써준다.

 
 
네모한칸에 최대로 채울 수 있는 숫자는 7이므로 십진수8을 팔진법으로 표현하려면 아래 그림과 같이 표현한다.
1: 일의 자리 숫자가 0이 되고
2: 십의 자리 숫자가 1로 올라간다.
Q : 8진수 77다음에는 어떤수가 올지 생각해봅시다.
 
 
 
 
A: 77 다음에 78이 올수없으므로 자릿수가 올라가야 합니다. 답은 100이 됩니다.
10진수에서 99다음의 숫자는 자릿수가 올라간 100이라고 하면 됩니다.
저는 이를 '꽉찬 수'라고 하겠습니다.
꽉 찬수의 예시
2진수에서 : 11, 111 등
8진수 에서 : 7, 77 등
16진수에서 : F,FF등
10진수에서 : 99,999등

 
Hexadecimal number (16진수)

  • Base: 16
  • Elements: 0,1,1,2,3,4,5,6,7,8,9 , A, B, C, D, E, F
  • 모두 16개의 숫자 중하나 가 들어갈 수가 있다.
  •  10이라고 나타내면 1과 0인지 10인지 헷갈리기 쉽기 때문에 10이라는 숫자 대신 A를 사용한다.
  • A~F순서대로 (윗줄과 마찬가지로) 10~15까지  맵핑해서 사용한다.
  • 그림 9 16진수 '오에프에이일' 이라고 읽는다.

 
 
 
네모한칸에 최대로 채울 수 있는 숫자는 15(F)이므로 십진수16을 표현하려면 아래 그림과 같이 표현한다.
1: 일의 자리 숫자가 0이 되고
2: 십의 자리 숫자가 1로 올라간다.

 
 
 
디지털 시스템에서 사용하는 숫자와 인간이 사용하는 수체계의 갭이 너무 커서 이를 메꿔주기위해
8진수와 16진수를 사용하게 된 것이다
1111111>> 이런 숫자들이 확 줄어들게 된다. 이진법을 사용했을때 보다 네모한칸에 들어갈수있는 숫자들이 많아졌으니까!
별거아닌 Tip:
10진수에서 2는 2진수에서 10
10진수에서 8은 8진수에서 10
10진수에서 16은 16진수에서 10
 

2-4. 10진수를 2진수,8진수,16진수로 변환하기

위의 상황들을 다 이해한다면
아래의 표를 채워넣을  수 있습니다. 직접 해보시기 바랍니다.

 
 
 2진수 채워넣기

 
 
 
 
8진수 채워넣기

 
 
 
16진수 채워넣기       
* (21.10.15 수정했습니다.)
수정내용: 아래 사진 일부(오른쪽 표에서 10진수16~10진수 26 을 16진수로 변환한 값)
 

 
 
 
 
16진수 FF를 2진수로 바꿔보는 것
2진수 101011을 8진수로 바꾸어 보는 것 등등
을 하려면 위표를 다 외워야 하나요? 라고 할 수도 있는데 그렇지 않습니다.
 
이를 하기전에 R진수라는 것에 대해 알아봅시다.

3. R진수

3-1. 어떤 공식이 있군

여기서 R은 임의의 정수 (양수)
R진수 공식은 모든정수에서 항상 성립하는 식 이다.
>> 위 식은 모든 진수를 십진법으로 변환시킬수 있는 식 입니다.
724.5라는 십진수를 생각하면 700+20+4+0.5라는 것을 쉽게 생각할 수가 있다. 
더 논리적으로 이야기하면 아래 그림과 같다.
 

 
 
가장 왼쪽에 있는 7을 MSD(most significant digit-가장 중요한 숫자) 라고 한다.
가장 왼쪽에 있는 숫자에 오류가 생기면 100만큼의 오류가 생기므로 가장 중요한 숫자라고 취급한다.
 
가장 오른쪽에 있는 숫자
위 숫자에서는 0.5 를 LSD(Least significant digit-가장 의미없는 숫자)
라고 한다.
 
 
 
 

3.2 위와 같은 R진법을  2진수에도 적용시켜 보도록 한다.

 

  • 2진수에서는 숫자 하나를 bit라고 한다. bit= binary digit 의 약자
  • 아래의 표를 잘 기억해두어야 한다. (이미 어느정도 기억하고 있을테지만 그래도 다시한번 확인해보기 바랍니다.)

 
 

  • 2의 -3승부터 2의 10승까지는 암기를 하고 있어야 공부하기 편할 것이다.
  • 지수가 마이너스일 때도 알아두기
  • 모든 수의 0승은 1이다.  (밑이 0이아닌이상 > 밑이 0이 되는 경우는 없다.> '지수' 정의)

 
본격적으로  2진수를 10진수로 바꾸어봅시다.
 
11010 이라는 2진수를 10진수로 바꿀 것 입니다.
 
 
팁을 드린다면 2의 0승을 먼저 기준으로 잡아둔다는 것입니다.(가장 처음으로 계산 한다는 이야기 입니다. 숫자가 길어질 수록 유용합니다.)
그리고 0인 부분은 과감하게 지우면 됩니다. (분홍색 형광펜)
2의 지수를 외우고 있다면 굉장히 빨리 계산할 수 있습니다.
 
 

위와 같은 과정을 거쳐서
2진수 11010은 10진수로 26임을 알수가 있습니다.
 

3.3 위와 같은 R진법을  8진수에도 적용시켜 보도록 한다.

8진수 236을 십진수로 변환하면 아래와 같습니다.

 

3.4 위와 같은 R진법을  16진수에도 적용시켜 보도록 한다.

16진수 127.4를 십진수로 변환하면 아래와 같습니다.

 
 
 

3.5 R진법을 이용해 자세히 배우지 않은 5진수에 적용시켜보겠습니다.

5진수312 를 십진수로 변환하면 아래와 같습니다.

이로써 R진법 공식 이 2,8,16진수 뿐만아니라 모든 진수에 적용되는 공식이라는것을 알 수 있습니다.

반응형
Comments