crossorigin="anonymous"> $(function(){ $('.article_view').find('table').each(function (idx, el) { $(el).wrap('
') }); $('img[alt="N"]').each(function(){ $(this).replaceWith('

N

') }); });

새소식

왕초보만/기초 왕초보만

뻘짓 하며 얻은 기본기 8 이진법

  • -

 

드디어 강의다운 강의가 시작된다. 바로 컴퓨터의 언어 이진법이다.

 

물론 모든 컴퓨터가 2진법이 기반은 아니다. 10진법을 기반으로 연산을 할 수도 있다.

 

그러나 오늘날의 대부분의 컴퓨터는 2진법을 기반으로 한다. 이는 하드웨어적인 이유가 크다.

 

논리의 조립이 간단하기도 하지만 내부에 사용되는 소자들의 특성상 계산이 2진법이 편리하기 

 

때문이다 (전기가 통한다 1 안통한다 0)

 

그래서 모든 전자기기에 반도체가 중요한 것이다. 전류를 흐르게 할떄와 안 흐르게 할 때를 

 

정할수 있는 부품이기 때문이다.

 

아무튼 컴퓨터는 이러한 이진법을 많이 쓰는데 10진법과 무엇이 다른가?

 

근본적으로 생각해보면 이러하다 10진법은 9 다음을 표현하려면 10으로 표현한다.

 

이는 두 자릿수이다. 왜냐 9까지 한 자릿수로 표현하기 때문이다.

 

10을 기준으로 자릿수가 올라간다.

 

따라서 9이상의 수는 한 자릿수로 표현이 불가능 함으로

 

앞에 1을 붙여 10 두 자릿수로 표현을 하는 것이다.

 

그럼 2진법은? 다음 자리수로 넘어가는 기준이 10이 아닌 2인 것이다.

 

따라서 1 보다 더 큰 숫자 2는 한자리 숫자로 쓸수 없음으로

 

10(2) 으로 표현한다. 그리고 옆에는 작은 괄호에 2라는 숫자를 써 

 

2진법을 나타내준다.

 

이진법 끝

 

이라면 너무 좋겠지만 여기서 부터 시작이다.

 

컴퓨터의 데이터 단위를 아는가? 이는 용량의 단위하고도 일치한다.

 

데이터의 최소단위는  bit 비트라고 한다. 들어보지 않았는가?

 

그리고 그것보다 더 큰 것은 byte 바이트 라고 한다. 

 

8bit=1byte이다.  그런데 왜 8일까?

 

예를들어 100cm는 1m라고 표현한다. 1000kg은 1ton이라고 표현한다

 

대부분 10단위인데 왜 이친구는 8일까?

 

이유는 2의 배수이기 떄문이다... 2의 3제곱 (2의 3승) 이기 때문에

 

이게 바이트다.

 

바이트의 각 자리에는 비트가 들어가고 총 8개가 들어간다. 따라서 8bit=1byte이다

 

그런데 아까 2진법 이야기를 하지 않았던가? 비트는 즉 0과 1로만 2진법으로 표현된다.

 

따라서 각 비트가 나타낼수 있는건 0,1 두개이다

 

만약 비트가 2개라면 몇가지의 수를 표현할수 있을까?

 

0,0  0,1

1,0  1,1

 

총 4개이다. 왜냐 bit 1개가 2가지의 표현이 가능하고 또하나의 bit가 2개가 표현이 가능함으로

 

2 x 2 =4이기 떄문이다.

 

그럼 비트가 8개면 몇가지 표현이 가능할까?

 

0,0,0,0,0,0,0,0  부터 0,0,0,0,0,0,0,1  .......  1,1,1,1,1,1,1,1   까지 총 256개이다

 

2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 256

 

즉 1byte는 256개의 숫자를 나타낼수 있는 것이다.  

 

참고로 256은 2의 8승이다.

 

2의 9승은 512

 

2의 10승은 1024이다.

 

무언가 익숙하지 않은가?  ram  너 몇기가야? 하면 아 나 256기가 아니면 512기가 이런식으로 말하지 않던가?

 

이거때매 그렇게 이야기 하는거다 그럼 2의 10승은 왜??

 

2의 10승... 1024.... 어라? 1000에 가깝네?? 그리고 10승이네?

 

인간은 10을 좋아한다 그래서 단위를 2의 10승단위로 묶고 나머지 24같은건 때 버린다.

 

따라서 아래와 같은 표가 나온다.

 

1byte기준으로

1MB(메가바이트)는 2의 10승 byte =1024

1GM(기가바이트)는 2의 10승 x 2의 10승 = 2의 20승  = 1,048,576

1TB(테라바이트)는 2의 10승 x 2의 10승 x 2의 10승 = 2의 30승 =1,073,741,824

....

 

뭐 이런 것이다.

접두어(SI) 이름 계산법 접두어(IEC) 이름 계산법
  1바이트(byte) 1000바이트=1kB     1024바이트=1KiB
킬로(103) 1킬로바이트(kilobyte)/kB 1000KB=1MB 키비(210) 1키비바이트(kibibyte)/KiB 1024KiB=1MiB
메가(106) 1메가바이트(megabyte)/MB 1000MB=1GB 메비(220) 1메비바이트(mebibyte)/MiB 1024MiB=1GiB
기가(109) 1기가바이트(gigabyte)/GB 1000GB=1TB 기비(230) 1기비바이트(gibibyte)/GiB 1024GiB=1TiB
테라(1012) 1테라바이트(terabyte)/TB 1000TB=1PB 테비(240) 1테비바이트(tebibyte)/TiB 1024TiB=1PiB
페타(1015) 1페타바이트(petabyte)/PB 1000PB=1EB 페비(250) 1페비바이트(pebibyte)/PiB 1024PiB=1EiB
엑사(1018) 1엑사바이트(exabyte)/EB 1000EB=1ZB 엑스비(260) 1엑스비바이트(exbibyte)/EiB 1024EiB=1ZiB
제타(1021) 1제타바이트(zettabyte)/ZB 1000ZB=1YB 제비(270) 1제비바이트(zebibyte)/ZiB 1024ZiB=1YiB
요타(1024) 1요타바이트(yottabyte)/YB 요비(280) 1요비바이트(yobibyte)/YiB

참고로 위는 데이터의 표이다.

 

이러한 이유 떄문에 컴퓨터에서 사용되는 데이터 크기나 화소 들이 모두 2의 배수로 표현된다.

 

사실 이 이진법은 나중에

 

연산법칙이 또 있는데 이 부분은 너무 어렵기 때문에 기초 부분에선 스킵하도록 하겠다.

 

바이트 코드라는 것이 있지 않았던가?? 위의 바이트가 바로 그 바이트고

 

고급언어를 바이트 코드로 만들고 나중에 비트코드로 만드는 것 그것이 컴파일이다.

Contents