Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

CHAPTER 3 —비트와 비트 패턴 Bits and Bit Patterns

Contents

비트와 비트 패턴 Bits and Bit Patterns

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_1.html 컴퓨터는 데이터(data)와 명령(instructions)을 비트 패턴으로 표현한다. 여러분은 비트 패턴에 먼저 친숙해져야 한다. 이 장이 비트 패턴에 친숙해 지도록 도움을 줄 것이다. 이 장은 비트 패턴에 대한 기초들을 논하고 있다.

주제:

  • 비트 패턴 Patterns of bits.
  • N 비트로 만들 수 있는 패턴의 경우의 수. The number of patterns that can be formed for N bits.
  • 어떻게 N 비트의 모든 형태를 체계적으로 열거할 수 있는가. How to systematically list all the patterns for N bits.
  • 2제곱수를 곱하는 것 Multiplying powers of two.
  • 바이트, 킬로바이트, 메가바이트, 기가바이트 Bytes, kilobytes, megabytes, and gigabytes.
  • 4 비트 패턴의 명명법 Names for four-bit patterns.
  • 16진법(헥사데시멀 hexadecimal) 의 명명법 Hexadecimal names for bit patterns.
  • 8진법(옥탈 octal)의 명명법 Octal names for bit patterns.
대부분의 컴퓨터 문서에서 8개의 연속적인 비트(bit)를 바이트(byte)라고 부른다. 하나의 비트는 0이나 1일을 담고 있으면 그것은 스위치에 켜짐(on)/꺼짐(off) 같은것을 표현할 수 있다.

질문: 하나의 비트로 몇가지의 패턴이 가능 합니까?

비트 패턴 Patterns of Bits

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_2.html 답 : 2가지 - 0 과 1 (다른말로 "꺼짐"과 "켜짐" ... 다른말로 "거짓"과 "참" .....) 하나의 비트는 0 이거나 1 이 될 수 있다. 하나의 비트에는 두가지의 가능한 패턴이 있다. 2개의 비트로는 몇가지의 패턴이 만들어질 수 있을까요? 여기에 가능한 패턴을 열거해 보자.
    0 0
    0 1
    1 0
    1 1
4가지 형태들이 가능하다.

질문 : 패턴 01 과 패턴 10은 다릅니까?

3비트로 몇가지 형태가 가능 합니까? How Many Patterns with Three Bits?

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_3.html 답 : 다릅니다. 비트의 위치가 중요합니다. 3비트로 몇가지 형태를 만들 수 있겠습니까? 열거해 봅시다.
    0 0 0
    0 0 1
    0 1 0
    0 1 1
    1 0 0
    1 0 1
    1 1 0
    1 1 1
8개의 패턴이 가능합니다.

질문: N 개의 비트로 만들 수 있는 패턴의 갯수가 비트들의 갯수보다 더 많습니까?

체계적으로 비트 패턴을 나열하기 Listing Patterns Systematically

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_4.html

답: 더많습니다. 간단한 사실이지만 컴퓨터 과학에서 굉장히 중요합니다.

주어진 비트에 따라 형성할 수 있는 모든 비트의 패턴을 열거하는 표준적인 방법이 있다. 처음에는 1개의 비트로 만들 수 있는 패턴을 열거해 보자.
0
1

1개의 비트로부터 2개의 비트를 만들기 위해서 2개의 1비트 리스트를 만들어 보자.
0
1

0
1

각 리스트안에서, 각자의 열(row)은 유일(unique)하다. 처음 카피리스트 각 열앞에 "0"을 붙여 보십시오 그리고 두번째 카피리스트에 첫열 앞에 "1"을 붙여보십시오. 합쳐진 리스트의 각자의 열(row)이 유일하게 만들어 보자.
0 0
0 1

1 0
1 1
이제 합쳐진 리스트에서 각각의 열(row)은 유일(unique)하다. 이렇게해서 우리는 2비트들의 가능한 패턴을 완전하게 나열해 보았다. 2 비트들에서 고유한 패턴의 수는 2의 2제곱(2^2)만큼 1 비트에(2^1) 비해 제곱수 만큼 증가 되었다.

추가적인 비트들에 대해서도, 이러한 과정을 반복해 보자.

질문: 3개의 비트로 몇가지 패턴이 가능할까요?

3개의 비트로 몇가지 패턴이 가능 합니까? How Many Patterns from Three Bits?

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_5.html

답: 8개의 패턴이 가능합니다.

위에 배운 방법을 반복해서 써보자. 2개의 비트 묶음으로 두개의 표를 만들어 보자.
  0 0
  0 1
  1 0
  1 1
  
  0 0
  0 1
  1 0
  1 1

이제 첫번째 묶음의 앞쪽에 "0"을 붙임으로써 각 열(row)들을 유일한(unique) 패턴으로 만들어 보십시요 그리고 두번째 묶음의 앞에 "1"을 붙여 각 열(row)들을 유일한(unique) 패턴으로 만들어 보자

0 0 0
0 0 1
0 1 0
0 1 1
  
1 0 0
1 0 1
1 1 0
1 1 1

여러분은 3가지 비트가 만들 수 있는 모든 패턴을 만들었다.

질문: N 개의 비트로 몇개의 패턴을 만들 수 있을까요?

N개의 비트에는 몇가지 패턴이 가능 할까요? How Many Patterns from N Bits?

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_6.html

답: N개의 비트로는 (N-1)비트로 만들 수 있는 형태의 가지의 수의 두배의 패턴을 만들 수 있다.

3 개의 비트 패턴을 나열한 결과 8개의 열의 패턴을 만들었다. 4개의 빗의 형태를 열거하기 위해서는 8개의 열로 묶인 2개의 표를 만든다. 이것은 16개의 열을 산출한다. 처음 묶음의 각열에 "0"을 붙이고 다음 묶음의 각열에 "1"을 붙여서 유일하게 만든다. 물론 이런식으로 여러분이 하고자 하는 만큼 계속해서 할 수 있다. 1개의 비트를 더할때마다 패턴의 가지수는 2제곱으로 증가한다. 밑에 표는 1,2,3 과 4 비트 의 패턴의 수 를 보여준다.

비트의 갯수패턴의 가지의 수2제곱수로 써본 패턴 가지의 수
1 22^1
2 42^2
3 82^3
4 162^4
5개의 비트는 몇개의 패턴의 가지의 수가 가능할가요? 4 비트 패턴으로 묵인 2개의 표를 만든다. 표당 16개의 패턴이 있다. 처음 16개의 패턴에 0을 붙이시고 뒤의 16개의 패턴에 1을 붙이셔서 유일하게 만든다. 여러분은 16x2=2^5개의 유일한 패턴들을 만들게 된다. 이것은 다음의 사실을 입증하고 있다.

N 비트로 나타낼 수 있는 형태의 가지의 수 = 2^N

이러한 사실을 명심하자. 위와 같이 여러분이 이해될 때 까지 패턴 표를 만들어 보자 . 이걸 지금 해보자. 꼭 알아야만 하는 굉장히 중요한 사실이다. 여러분이 이 개념이 머리속에 잘 잡히지 않는다면, 앞으로의 과정은 시간 낭비만 될 수 있다. 10개의 빗이 만들 수 있는 형태의 가지의 수 는 몇개 입니까? 공식을 사용해보자.

2^10 = 1024

이 숫자는 컴퓨터 공학에 자주 보는 숫자이다. 1024 bytes는 킬로바이트(kilobyte)라고 불리우기도 하고 줄여서 그냥 "케이(k)"라고 부르기도 한다.

질문: 옛날 컴퓨터들은 메모리 어드레스로 16 비트를 사용했습니다. 특별한 장치나 기술을 사용하지 않는 다고 가정하고, 주저장장치에 담을수 있는 최대의 바이트(byte)량은 얼마나 될까요?

패턴에 대해 더생각해보기 More About Patterns

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_7.html

답: 64K bytes : 2^16 = 2^(6 + 10) = 2^6 × 2^10 = 64K

비트의 갯수패턴의 가지의 수2제곱수로 써본 패턴 가지의 수
122^1
242^2
382^3
4162^4
5322^5
6642^6
71282^7
82562^8
95122^9
1010242^10
비트 형태와 관련된 계산들은 다음과 같은 공식을 사용한다.(공식을 꼭 머리에 넣으세요)

2^(N+M) = 2^N × 2^M

계속해서 표를 써낳아가도 되겠지만 보시다시피 표를 만들고 계산하는것은 특별한게 없다. 그렇지만 몇가지 자주 쓰이는 값은 외워두는것이 좋다.

10개 또는 그 이상의 비트들로 형성될 수 있는 가지의수는 케이(Kay) 1024(=2^10) 또는 메그스(Megs) 2^20로 표현된다. 예를들어, 24 비트에는 몇가지 패턴이 가능한가?

2^24= 2^4 x 2^20 = 16 메그(Meg)

2^24 를 2^4과 메그(Meg)라는 이름을가진 2^20으로 나눌 수 있다. 알아두면 나중에 친구들이나 동료들에게 좋은 인상을 줄 수 있다. 어떤 오디오 카드는 12bits로 사운드 레벨(level)을 표현한다.(12 bits per sample). 몇개의 시그널 레벨(level)의 표현이 가능한가?

2^12 = 2^2 × 2^10 = 4K levels

QUESTION 7:

질문: 여러분이 만약에 6bit로 색을 표현하는 그래픽 카드와 8bit로 색을 표현하는 그래픽 카드중에 하나를 고른다고 생각해 보십시요. 8bit 카드가 6bit 카드 보다 더비쌉니다. 어떤 카드를 여러분은 선택하시겠습니까?

*앞으로 단위는 영어로 쓰겠습니다.

비트 형태들의 이름 Pattern Names

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_8.html

답: 8 bit 카드. 8 bit 카드가 더 많은 색을 표현할 수 있습니다. 비트 패턴이 색을 표현한다고 가정해 봅시다. 6 bit 를 사용하면 카드는 2^6=64 색을 표현합니다. 8 bit 를 사용하면 2^8=256 색을 표현할 수 있습니다. 상당한 표현력의 차이 입니다.

16진수 명명법(hexadecimal)

4 bit 묶음16 진수4 bit 묶음16 진수
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F
다음의 비트 형태를 주목해 보십시오.

0010100010101010

위와같이 나열하면 읽기가 쉽지 않다. 4비트로 묶어 놓는것이 보기에 편하다.

0010 1000 1010 1010

4 비트 묶음은 16가지 (2^4)의 비트 패턴이 가능하다. 각 패턴 마다 표에서와 같이 지정된 16진수에 이름을 붙인다.

혹 여러분은 이런 4 bit 패턴 같은 비트의 형태를 그냥 이진수로 표현된 숫자들이라고 부를 수 도 있다. 컴퓨터의 주저장장치의 비트 패턴은 여러가지 목적에 사용된다. 숫자를 나타내는 것도 그중에 하나이다. 반복해서 말하지만 "비트의 형태"를 핵심 개념으로 생각하라. 비트의 형태로 숫자를 표현하는 것은 비트형태로 표현할 수 있는 많은 것들 중에 한가지라는 것을 명심하자.

위에 비트 형태는 16진수를 사용해 다음과 같이 다시 쓸 수 있다.

0010 1000 1010 1100 = 28AC

4 비트 묶음들이 16진법(hexadecimal) 패턴으로 오른쪽에 다시 표현 되었다.

질문 : 1011 0110 을 16진법 패턴 명명법으로 다시 써보자.

16진수 연습 더해보기 More Hex Practice

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_9.html 답:B6

16진수 명명법 Hexadecimal Names

4bit 묶음16진수4bit 묶음16진수
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

만약에 왼쪽으로 부터 4비트 묶음을 만들 경우 비트가 모자란 상황에선, 숫자 0을 왼쪽에 붙여서 4비트 묶음을 만들자. 몇개의 비트를 묘사하는지 명확히 하자.

예를들어 1010000010000010 = 1010 0000 1000 0010 = A082

또다른 예 10100110101111 = 10 1001 1010 1111 = 0010 1001 1010 1111 = 29AF

16진법(hexadecimal) 패턴임을 나타내기 위해 일반적으로 패턴앞에 '0x'를 붙인다. 0x0010 = 0000 0000 0001 0000 0xFACE = 1111 1010 1100 1110

16진법(hexadcimal) 패턴의 이름은 사람들이 비트 패턴에 대해 논할 때 만 사용된다는 점을 유념하자. 컴퓨터 내부에서는 이진법과 0과1의 비트 패턴만이 존재한다. 16진법 패턴은 책과 문서들에서 비트 패턴을 나타내기 위해 사용할 뿐이다.

질문: 다음 이진수를 16진수 패턴으로 나타내 보십시요. 01101010

왼쪽에 붙은 0숫자들 Zeros On the Left

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_10.html

답: 01101010 = 0110 1010 = 6A

8진수(Octal) 명명법

3bit 묶음8진수3bit 묶음8진수
00001004
00111015
01021106
01131117
컴퓨터 문서에서 자주 묘사되는 비트 형태로 3 비트 묵음 형태가 있다. 3비트 묵음은 16진수 명명법에서 처음 8개의 명명된 수를 사용한다. 이런 명명 방법을 8진수 영어로 옥탈(octal) 명명법이라고 한다. 비트형태는 16진법이나 8진법 또는 많은 다른 명명법을 사용해 표현할 수 있다.

01101010 = 01 101 010 = 152 8진수(octal) 01101010 = 0110 1010 = 0x6A 16진수(hexadecimal)

옥탈 명명법을 8 비트 바이트묶음을 설명하는데 쓰는 것은 좀 부자연스럽다. 왜냐하면 바이트 묶음은 8진수 패턴(octal pattern)으로 잘쪼깨지지 않는다. 그렇지만 역사적으로 컴퓨터 문서에서 옥탈 명명법을 사용하기 때문에 꼭 알아 둘 필요는 있다. C나 자바같은 프로그램언어에서는 옥탈숫자들은 0으로 시작한다.

0152 (8진수 octal) = 001 101 010 0x152 (16진수 hex) = 0001 0101 0010 152 (10진수 decimal) = 1001 1000

틀린 것이 없을 것 같은 프로그램을 가지고 무엇이 잘못 되었는가 찾느라고 무수한 시간을 낭비한 적이 있다. 결국 0으로 시작하지 말아야 될 수에서 앞에 0이 붙어 있는 것을 발견했다. 0을 왼쪽에 붙이는것 은 새로운 패턴을 만들어 낸다. 0x0 = 0000 는 0x00= 0000 0000 와는 다른 패턴 이다. 아쉽게도 사람들이 이런 패턴이나 수를 사용하는 방법이 일정하지 않다. 문맥에 따라서는 두 패턴 다 그냥 "0x0"라고 부를 수 있다. 비트의 갯수가 4배수 가 아닐 경우에는 왼쪽에 0을 붙이고 그 패턴을 명명하는게 관례이다.

질문: 다음 패턴을 16진수로 어떻게 나타 낼까요? 10 1101 0101

3장 끝

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03_11.html

답: 0x2D5

쓰여진 용어들

  • 바이트 Byte
  • 비트 패턴을 나열하는 것 Listing bit patterns
  • N 비트로 만들수 있는 패턴의 가지의 수 Number of patterns with N bits
  • 킬로 바이트 kilobyte
  • 거듭제곱수를 곱하는 것 Multiplying powers
  • 비트 묶음 명명법 Nibble Names
  • 16진수 Hexadecimal
  • 8진수 Octal
퀴즈를 꼭 풀어 봅시다. http://chortle.ccsu.edu/AssemblyTutorial/Chapter-03/ass03quiz.html

공부 링크

숫자시스템