티스토리 뷰



0과 1로 정보를 표현하는 디지털 시대에서 정보의 최소 단위는 비트(Bit)입니다. "순서 논리 회로와 보수 - 정보처리 필기 해설 5"에서도 언급한 것처럼 플립플롭을 사용해서 저장하는 정보의 최소 단위는 비트입니다. 이 비트들을 모아서 다양한 정보의 단위로 사용하는데 다음과 같은 것들이 있습니다.

    • 니블(Nibble, nybble) : 4비트. 4비트는 16진수의 한자리와 같기 때문에 상위 니블, 하위 니블식으로 정보를 나누어 저장하기도 합니다.

    • 바이트(Byte) : 8비트. 문자를 표현할 수 있는 최소 단위. 

    • 워드(Word) : 컴퓨터의 정보 처리 단위라 할 수 있습니다. CPU의 레지스터 크기나 CPU가 메모리를 한번에 읽을 수 있는 단위에 따라 달라지므로 중앙처리장치(CPU)의 아키텍처가 워드의 크기를 결정합니다. 워드 크기가 4 byte인 컴퓨터라면 Half word는 2 byte, Full word는 4 byte, Double word는 8 byte, Quad word는 16 byte 입니다.

    • 블록(Block) : 메인 메모리와 CPU 사이에서 속도를 높이기 위해 사용하는 캐시 메모리의 관리 단위로 Quad word 부터 채용하는 기법에 따라 블록 크기는 달라집니다.

    • 페이지(Page) : 가상 메모리의 관리 단위로 디스크와 메모리 간의 이동 단위입니다.


비트나 바이트의 크기를 설명함에 있어서 일상의 1,000m를 1Km라 부르는 것과 유사하게 K, M, G등의 단위를 사용하지만 엄밀하게 인 1,000의 배수가 아니라 인 1,024의 배수입니다. 상세한 내역은 아래와 같습니다.

    • K(킬로, kilo) : 

    • M(메가, mega) : 

    • G(기가, gaga) : 

    • T(테라, tera) : 

    • P(페타, peta) : 

    • E(엑사, exa) : 

    • Z(제타, zetta) : 

    • Y(요타, yotta) : 


비트열을 바이트 단위로 단순 문자열로 표현하는 것이 아니라 바이너리(Binary) 숫자인 경우에는 비트열의 크기 만큼 표현할 수 있는 숫자의 크기도 달라집니다. 아래는 바이트 크기에 따른 표현 가능한 정수의 범위입니다.

    • 바이트 : −128 ~ 127, 0 ~ 255

    • 바이트 : −32,768 ~ 32,767, 0 ~ 65,535

    • 바이트 : −2,147,483,648 ~ 2,147,483,647, 0 to 4,294,967,295

    • 바이트 : −9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807, 0 ~ 18,446,744,073,709,551,615

    • 16 바이트 : −170,141,183,460,469,231,731,687,303,715,884,105,728 ~ 170,141,183,460,469,231,731,687,303,715,884,105,727, 0 ~ 340,282,366,920,938,463,463,374,607,431,768,211,455

동일한 비트열을 부호 없는(Unsigned) 정수로 인식하면 0부터 까지의 정수를 표현할 수 있고 부호 있는(Signed) 정수로 인식하면 부터  까지를 표현할 수 있습니다. 문제는 동일한 비트열을 부호를 가진것 또는 부호가 없는 것으로 인식하는 여부에 따라 값이 달라 질 수 있다는 것으로 통상 많이 사용하는 2의 보수를 통한 음수 표현을 적용할 것인지 여부를 다룹니다. 최상위 비트(MSB, Most Significant Bit)를 부호 비트로 간주해서 MSB가 On이면 음수, Off면 양수로 처리합니다. 비트열을 가지고 음수를 표현하는 방식에는 다음과 같은 3가지 방식이 있지만 통상 2의 보수를 사용합니다.

    • 절대값 표현 : 부호 비트로 사용하는 MSB를 제외한 나머지 비트열에 절대값을 기록하는 방식.
      -7, +7의 절대값이 동일하므로 +7은 MSB를 Off하여 00000111 -7은 MSB를 On해서 10000111로 표현

    • 1의 보수 표현 : 비트열을 양수면 그대로 두고 음수면 각 비트를 1/0로 바꾸는 1의 보수로 표현하는 방식.
      +7은 절대값 표현과 동일하고 -7이면 모든비트를 1<->0 바꾸어 11111000로 표현합니다.

    • 2의 보수 표현 : 비트열을 양수면 그대로 두고 음수면 각 비트를 1/0로 바꾸고 +1해서 2의 보수로 표현하는 방식.
      +7은 절대값 표현과 동일하고 -7이면 모든비트를 1<->0 바꾸고 +1해서 11111001로 표현합니다.

음수를 2의 보수로 표현하는 것이 일반적인 이유가 몇가지 있는데 아래와 같습니다.

    • 한가지의 0만 존재
      절대값 표현과 1의 보수는 +0, -0이라는 두가지의 0이 존재하지만 2의 보수는 하나의 0만이 존재합니다.

    • 표현 가능한 수의 범위가 넓음
      두가지 0이 존재하지 않기 때문에 당연히 표현 가능한 수의 범위가 음수쪽으로 하나 더 많습니다.

    • 연산이 단순
      두개의 정수를 더하는 과정에서 1의 보수 방식의 경우에는 연산후에 +1을 해야 하는 번거로움이 있지만 2의 보수는 별다른 과정을 필요로 하지 않습니다. 예를 들어 -7 + 7을 1의 보수 방식으로 표현해서 더하면 11111000 + 00000111 = 11111111 으로 -7 + 7 = 0이라는 결과가 나오지 않습니다. +1을 하면 0이 나옵니다. 반면 2의 보수 방식으로 표현해서 더하면 11111001 + 00000111 = 00000000로 별다른 조치가 필요하지 않게 원하는 결과를 얻을 수 있습니다.


일상 생활에서는 0~9의 아라비아 숫자를 사용하는 십진법을 사용하지만 컴퓨터에서는 2진법에 기반한 2진수, 8진수, 16진수를 사용합니다. 2진수는 0과 1로 표현하고 8진수는 0~7을 사용하고 16진수는 0~9와 A~F를 10부터 15를 대신해서 사용합니다. 물론 0~9와 A~Z를 사용하여 36진수도 표현할 수 있을 것입니다. 십진수를 N진수로 바꾸는 방법은 아래와 같습니다.

십진수를 N진수로 변환하는 방법은 소수점위의 값은 N으로 나눈 나머지를 취하고 소수점 아래는 N으로 곱한 올림수를 취하는 방법을 사용합니다. 위의 예제는 십진수 14.125를 2진수로 구하는 과정으로 소수점 위의 값을 더이상 나눌 값이 없을 때까지 2로 나누고 각 단계의 나머지를 기록합니다. 첫 나머지가 맨 아래 자리의 값이 됩니다. 소수점 아래는 값을 N으로 곱해서 소수점 아래가 0이 될때까지 N으로 곱하면서 올림값을 기록하면 됩니다. 첫 올림수가 소수점 아래 첫자리의 값이 됩니다. 소수점 아래의 N진수 표현은 컴퓨터 내부에서는 실제로는 거의 사용되지 않고 부동소수점 표현 방식을 사용합니다.

 16,384

 8,192

 4,096

 2,048

 1,024

 512

 256

 128

 64

 32

 

 

 

 

 

 

 

 

 

 

 16

 8

 4

 2

 1

 0.5

 0.25

 0.125

 0.0625

 0.03125

 

 

 

 

 

 

 

 

 

 

N진수에서 십진수로 변환하는 방법은 위의 도표와 같이 N진수 각 자리에 해당하는 값을 모두 더하면 됩니다. 2진수 1110.001은 8+4+2+0.125=14.125입니다. N진수 각 자리에 해당하는 값은 인 1을 기준으로 소수점 위는 N을 연속적으로 곱해가고 소수점 아래는 N으로 나눈 값입니다. N진법간의 변환에 있어 위에서 언급한 방식과 함께 2진수, 8진수, 16진수는 상호 비트열 단위로 묶는 방식으로 간편하게 진법간 변환을 수행할 수도 있습니다. 2진수를 3비트씩 묶으면 8진수로 4비트씩 묶으면 16진수로 간단히 변환 할 수 있습니다. 예를 들어 2진수 1110.001은 8진수 16.1, 16진수 E.2로 변환할 수 있습니다. 주의할 점은 묶음 기준을 소수점을 기준으로 좌측, 우측으로 3비트씩, 4비트씩 묶어야 하고 빈자리는 0으로 간주 합니다. 1110을 8진수로 변환한다면 001 110으로 채워서 묶고 0.001을 16진수로 변환한다면 0.0010으로 채우고 묶어서 변환합니다.


※ 기출 문제로 다시 한번 점검해 보세요.

1. 주기억장치에서 자료 표현의 최소 단위는? (정답보기)

가. 블록(Block) 나. 바이트(Byte)

다. 셀(Cell) 라. 레코드(RECORD)


2.  일반적으로 Full Word는 몇 bit인가? (정답보기)

가. 16 나. 32

다. 8 라. 64


3. 10진수 32를 2진수로 변환할 경우 올바른 것은? (정답보기)

가. 100001 나. 100000

다. 110000 라. 101010


4. 2진수 101111110을 8진수로 변환하면? (정답보기)

   가. 576 나. 567

   다. 557 라. 558


5. 10진수 14.625를 2진수로 표현한 값은? (정답보기)

   가. 1111.011 나. 1110.110

   다. 1110.011 라. 1110.101


6. 다음 중 제일 큰 수는? (정답보기)

가. 16진수 FF 나. 2진수 11111111

다. 10진수 325 라. 8진수 377


7. 10진수 0.1875를 8진수로 변환하면? (정답보기)

가. 0.178 나. 0.158

다. 0.148 라. 0.168


8. 142(8)를 10진수로 변환하면?(정답보기)

   가. 88 나. 98

   다. 108 라. 118


9. 2진수 0.1101을 10진수로 변환하면?(정답보기)

    가. 0.8125 나. 0.875

    다. 0.9375 라. 0.975


10. 16진수 FF를 10진수로 나타낸 것은? (정답보기)

    가. 256 나. 265

    다. 255 라. 245



댓글
댓글쓰기 폼