Presentation is loading. Please wait.

Presentation is loading. Please wait.

Bits, Data Types, and Operations

Similar presentations


Presentation on theme: "Bits, Data Types, and Operations"— Presentation transcript:

1 Bits, Data Types, and Operations
Chapter 2 Bits, Data Types, and Operations

2 How do we represent data in a computer?
컴퓨터는 기본적으로 전자 장치 컴퓨터 내의 수 많은 아주 작고 아주 빠른 장치들이 전자의 흐름을 제어하여 기능을 수행함 두 가지 상태를 표현하는 간단한 방법 전압의 존재 (특정 수준 이상의 전압) – 상태 “1” 전압의 부재 (특정 수준 이하의 전압) – 상태 “0” 전압의 존재 여부가 아닌 전압 값을 이용하면 보다 많은 상태를 표현할 수 있지만 제어 및 검출 회로가 복잡해짐

3 컴퓨터는 이진(Binary) 디지털(Digital) 시스템
Digital System 유한하고 이산적인 (Finite and Discrete) 값만을 가지는 시스템 Binary (Base 2) System 0과 1 두 가지 상태 값만 가지는 시스템 정보의 기본 단위  binary digit  bit 두 가지 상태 이상을 필요로 할 경우 여러 비트로 표현 2 bits – 00, 01, 10, 11 : 4개의 상태 표현 가능 3 bits – 000, 001, 010, 011, 100, 101, 110, 111 : 8개의 상태 표현 𝑛 bits – 2 𝑛 개의 상태 표현

4 표현 대상이 되는 데이터에는 뭐가 있을까? 데이터 형식(Data type)
수 (Numbers) – 부호 포함 여부 (signed, unsigned), 정수(integers), 유리수(rational), 무리수(irrational), 부동 소수점(floating point), 복소수(complex), … 텍스트 (Text) – 문자(characters), 문자열(strings), … 이미지 (Images) – 픽셀(pixels), 색상(colors), 형태(shapes), … 소리 (Sound) 논리 값(Logical) – 참(true), 거짓(false) 명령어 (Instructions) 데이터 형식(Data type) 단순히 정보를 표현(Representation)하는 방법만을 의미하지 않음 컴퓨터에서 데이터 형식이란 정보 표현 뿐 아니라 그 데이터 형식에 대해 수행 가능한 연산(Operation)을 가져야 함. ISA = (고유의 데이터 형식 집합) + (각 데이터 형식에 적용 가능한 연산 집합)

5 Unsigned Integers – 부호가 없는 정수 (음의 값 X)
Non-positional notation 위치가 특별한 의미를 가지지 않는 표현 예) “5”는 5개의 1과 같으므로 “11111”이라는 문자열로 표현 어떤 문제가 있을까? Weighted positional notation 위치가 의미를 가지는 표현 예) 10진수 값 “329” : “3”은 그 위치로 인해 300을 의미 most significant bit (최대 유효 비트) least significant bit (최소 유효 비트) 329 102 101 100 101 22 21 20 3x x10 + 9x1 = 329 1x4 + 0x2 + 1x1 = 5

6 Unsigned Integers (cont.)
𝒏 bits로 𝟎 ~ (𝟐 𝒏 −𝟏) 까지 𝟐 𝒏 개의 음이 아닌 정수 표현 가능 22 21 20 1 2 3 4 5 6 7

7 Unsigned Binary Arithmetic
Base-2 덧셈 – 10진수 덧셈 하듯이 수행하면 됨 오른쪽부터 왼쪽으로 덧셈을 함. 합하여 2가 되면 자리 올림(Carry) carry 10111 + 111 뺄셈, 곱셈, 나눗셈도 유사함

8 Signed Integers – 부호를 가지는 정수
𝒏 bits로 𝟐 𝒏 개의 서로 다른 값 표현 가능 그 중 약 절반을 (1 ~ 2 𝑛−1 ) 구간의 양의 정수 표현을 위해, 또 다른 절반을 (− 2 𝑛−1 ~ −1) 음의 정수 표현을 위해 할당 2개 값이 남는데 하나는 0을 표현, 나머지 하나는 여유분 양의 정수 부호 없는 (unsigned) 정수와 같이 해석 단 최대 유효(MS – Most Significant) 비트 값이 0 : 예) = 5 음의 정수 ? Signed Magnitude (부호-절대값) 예) = -5 One’s Complement (1의 보수) 예) = -5 Two’s Complement (2의 보수) 예) = -5 어떤 것이 좋은가? 연산 회로 구현의 편의성

9 Signed Integer – Signed Magnitude
첫 비트는 부호 그 이하는 절대 값 값의 표현 범위 : − 2 𝑛−1 +1≤𝑖≤ 2 𝑛−1 −1 문제점 덧셈, 뺄셈 수행의 어려움 두 개의 0 값 -4 10100 -3 10011 -2 10010 -1 10001 -0 10000 +0 00000 +1 00001 +2 00010 +3 00011 +4 00100

10 Signed Integer - One’s Complement
Invert All Bits 절대 값이 같은 양의 정수의 각 비트 값을 바꿈. 값의 표현 범위 : − 2 𝑛−1 +1≤𝑖≤ 2 𝑛−1 −1 문제점 덧셈, 뺄셈 수행의 어려움 두 개의 0 값 -4 11011 -3 11100 -2 11101 -1 11110 -0 11111 +0 00000 +1 00001 +2 00010 +3 00011 +4 00100

11 Signed Integer – Two’s Complement
“부호-절대값”과 “1의 보수” 표현법의 문제점 0의 2가지 표현법 : +0 과 –0 산술 연산 회로가 복잡 예) 부호-절대값 방식에서 2 + (-3)  “00010” + “10011” 예) 1의 보수 방식에서 4 + (-3)  “00100” + “11100” “2의 보수” 표현법은 보다 간단한 산술 연산 회로를 위해 개발 양수 X와 그에 대응하는 음수 (-X)의 표현을 기본 이진 덧셈 했을 때 모든 비트가 0이 되도록, 즉 X + (-X) = 0을 만족하도록 음수 표현. 이진 덧셈 시 마지막 자리 올림은 무시 00101 (5) (9) (-5) (-9) 00000 (0) (0)

12 2의 보수 표현법 0 또는 양수 일반적인 이진 표현, 최대 유효 비트 값은 0 음수 절대 값이 같은 양수 값 표현으로부터 시작 각 비트 값을 변경 0은 1로, 1은 0으로; 즉 1의 보수 표현 그것에 1을 더함 00101 (5) (9) 11010 (1’s comp) (1’s comp) 11011 (-5) (-9)

13 2의 보수 표현법 보다 빨리 구하는 방법 100101111 (1’s comp) + 1 100110000 100110000
오른쪽부터 시작하여 처음 “1” 값을 가지는 비트까지 그대로 복사 이후 나머지 비트 값들을 뒤집음. (1’s comp) + 1 (flip) (copy)

14 Two’s Complement Signed Integers
𝒏 bits 표현 가능한 수 : − 𝟐 𝒏−𝟏 ~ 𝟐 𝒏−𝟏 −𝟏 . 최소 (절대값은 가장 큰) 음수 (− 𝟐 𝒏−𝟏 )에 양수 대응 값은 없음. 최대 유효 비트는 부호 비트 : − 𝟐 𝐧−𝟏 만큼의 무게를 가짐 -23 22 21 20 1 2 3 4 5 6 7 -23 22 21 20 1 -8 -7 -6 -5 -4 -3 -2 -1

15 2의 보수 2진수를 10진수로 변환하는 법 X = 01101000two = 26+25+23 = 64+32+8 = 104ten
첫 비트, 즉 최대 유효 비트가 1이면 그것의 2의 보수, 즉 대응하는 양수를 구한다. 1의 값을 가진 비트들에 대해 해당 위치에 따른 2의 거듭 제곱 값을 구한다. 원래 값이 음수였다면 마이너스 부호를 붙인다. n 2n 1 2 4 3 8 16 5 32 6 64 7 128 256 9 512 10 1024 X = two = = = 104ten

16 추가 예제 X = 00100111two = 25+22+21+20 = 32+4+2+1 = 39ten X = 11100110two
= = = 39ten n 2n 1 2 4 3 8 16 5 32 6 64 7 128 256 9 512 10 1024 X = two -X = = = = 26ten X = -26ten

17 10진수를 2의 보수 2진수 표현으로 변환하는 법 (1) X = 104ten 104/2 = 52 r0 bit 0
방법 1 : 2 나누기에 기초한 방법 10진수의 절대값 구하기 (당연히 양수 값임) 2로 나눔 – 나머지는 최소 유효 비트 값 결과가 0이 될 때까지 계속 2로 나눔; 나머지 값을 오른쪽부터 왼쪽으로 써 나감. 최대 유효 비트에 0을 덧붙임; 만약 원래 값이 음수인 경우 2의 보수 표현을 구함. X = 104ten 104/2 = 52 r0 bit 0 52/2 = 26 r0 bit 1 26/2 = 13 r0 bit 2 13/2 = 6 r1 bit 3 6/2 = 3 r0 bit 4 3/2 = 1 r1 bit 5 X = two 1/2 = 0 r1 bit 6

18 10진수를 2의보수 2진수 표현으로 변환하는 법 (2) X = 104ten 104 - 64 = 40 bit 6
방법 2: 2의 거듭제곱 뺄셈에 기초한 방법 십진수의 절대값 구하기 그 수보다 같거나 작은 2의 거듭제곱 값을 뺌 해당 위치의 비트 값을 1로 만듦 결과가 0이 될 때까지 뺄셈을 계속함. 최대 유효 비트에 0을 덧붙임. 만약 원래 값이 음수인 경우 2의 보수 표현을 구함. n 2n 1 2 4 3 8 16 5 32 6 64 7 128 256 9 512 10 1024 X = 104ten = 40 bit 6 = 8 bit 5 8 - 8 = 0 bit 3 X = two

19 연산 : 산술 연산과 논리 연산 데이터 형식은 표현과 연산 모두를 포함한다는 점을 상기하라.
Signed Integer 표현 방법 알았으니 관련한 산술 연산 (Arithmetic Operation)을 살펴보자. 덧셈 (Addition) 뺄셈 (Subtraction) 부호 확장 (Sign Extension) 덧셈 시 넘침(overflow) 현상 및 조건에 대해 이해하자. 유용한 논리 연산(Logical Operations)도 살펴보자. 논리곱 (AND) 논리합 (OR) 부정 (NOT) 곱셈과 나눗셈 등은 위 연산들을 조합하여 구현 가능하다.

20 Addition + 11110000 (-16) + (-9) 01011000 (98) (-19)
2의 보수 표현에서 덧셈은 일반 2진 덧셈과 동일함 덧셈을 할 모든 정수가 동일한 수의 비트를 가진다고 가정함 마지막 자리 올림 (Carry Out)은 무시 당분간은 덧셈 결과가 𝑛 비트로 표현 가능한 경우만 다룸. (104) (-10) (-16) + (-9) (98) (-19)

21 Subtraction - 00010000 (16) - (-9) + 11110000 (-16) + (9)
뺌수의 부호를 바꾸고 빼임수와 더함 A – B : A (빼임수,피감수/minuend); B (뺌수, 감수/subtrahend) 모든 정수가 동일한 수의 비트를 가진다고 가정함 마지막 자리 올림은 무시 당분간은 뺄셈 결과가 𝑛 비트로 표현 가능한 경우만 다룸 (104) (-10) (16) - (-9) (-16) + (9) (88) (-1)

22 Sign Extension 4-bit 8-bit 0100 (4) 00000100 (still 4)
두 수를 더하려면 두 수를 같은 비트 수로 표현하여야 한다. 왼쪽을 단순히 0으로 채울 경우 최대 유효 비트, 즉 부호 비트로 채울 경우 4-bit 8-bit 0100 (4) (still 4) 1100 (-4) (12, not -4) 4-bit 8-bit 0100 (4) (still 4) 1100 (-4) (still -4)

23 Overflow + 01001 (9) + 10111 (-9) 10001 (-15) 01111 (+15)
연산 결과 값이 커서 𝒏 bits로 표현할 수 없는 경우 넘침 발생 여부를 확인하는 방법 더하는 두 값의 부호는 같은데 그 결과의 부호가 다름. 두 값의 부호가 다른데 넘침이 발생할 수 있을까? 넘침을 확인하는 다른 방법 – H/W로 구현하기 쉬운 방법 최대 유효 비트로 들어오는 Carry 값과 빠져 나가는 Carry 값이 다름 01000 (8) (-8) (9) (-9) 10001 (-15) (+15)

24 Logical Operations A B A AND B 1 A B A OR B 1 A NOT A 1
논리 참 또는 거짓에 대한 연산 2개의 상태 값 – 참과 거짓의 표현을 위해 1 bit를 사용 참(TRUE) = 1, 거짓(FALSE) = 0 𝒏 bit로 표현된 수에 대한 논리 연산 ? 수를 𝑛 개의 논리 값의 집합으로 해석하고 논리 연산을 수를 구성하는 각 bit들에게 독립적으로 적용 A B A AND B 1 A B A OR B 1 A NOT A 1

25 Examples of Logical Operations
AND - 논리곱 비트 값을 지울 때 유용함 0으로 AND = 원래 값에 관계 없이 0 1로 AND = 원래 값에 변화 없음 OR - 논리합 비트 값을 채울 때 유용함 0으로 OR = 원래 값에 변화 없음 1로 OR = 원래 값에 관계 없이 1 NOT - 부정 인자가 하나인 단항 연산 모두 비트 값을 뒤집음 01, 10 AND OR NOT

26 16진수 표현 (Hexadecimal Notation)
2진수를 16진수로 표현하는 것이 편리한 경우가 많음 표현에 필요한 기호의 수 감소– 4 bits를 하나의 16진수 기호로 틀릴 확률 감소 – 긴 0과 긴 1이 나오는 2진수 수는 보거나 적을 때 틀리기 쉬움 Binary Hex Decimal 0000 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 Binary Hex Decimal 1000 8 1001 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15

27 2진수를 16진수로 변환하는 법 오른 쪽부터 4 bits 묶어 16진수 기호로 변환 3 A 8 F 4 D 7 16진수 표현은 또 다른 컴퓨터 내부 표현 방식은 아님. 컴퓨터 내부의 표현 방식인 2진수를 보다 편리하게 작성하기 위한 것임에 유의

28 Fractions: Fixed-Point
소수는 어떻게 표현하여야 할까? 일반 10진 소수에서 소수점을 사용하듯이 2진 소수점 사용 소수점을 기준으로 2의 + 거듭제곱에서 2의 – 거듭제곱으로 2의 보수 표현 기반 정수 덧셈과 뺄셈이 소수에 대해서도 활용 가능 덧셈을 할 때 소수점 위치를 맞추어야 함 (40.625) (-1.25) (39.375) 2-1 = 0.5 2-2 = 0.25 2-3 = 0.125

29 Very Large and Very Small: Floating-Point
큰 수의 예 : 𝟔.𝟎𝟐𝟑×𝟏 𝟎 𝟐𝟑 bits가 필요 작은 수의 예: 𝟔.𝟔𝟐𝟔×𝟏 𝟎 −𝟑𝟒 bits 이상이 필요 과학적 기수법(Scientific Notation) 개념을 차용 과학적 기수법 : 𝑎× 10 𝑏 아주 크거나 작은 수를 편리하게 나타내기 위한 표준화된 표현법 부동(浮動) 소수점 (Floating Point) 표현 : 𝐹× 2 𝐸 𝐸 값에 따라 소수점 변경 소수부 𝐹, 지수부 𝐸 그리고 부호를 표현하는 방법이 필요 IEEE 754 Floating-Point Standard (32-bits): Exponent = 255 used for special values: If Fraction is non-zero, NaN (not a number). If Fraction is zero and sign is 0, positive infinity. If Fraction is zero and sign is 1, negative infinity. 1b 8b 23b S Exponent Fraction 𝑁= −1 𝑆 ×1.𝐹× 2 𝐸−127 , 1≤𝐸≤254 𝑁= −1 𝑆 ×0.𝐹× 2 −126 , 𝐸=0

30 Floating Point Example
Single-precision IEEE floating point number: 부호 값 1 – 음수를 의미 지수 값 = 126 (10진수). 소수부 값 … = 0.5 (10진수). Value = -1.5 x 2( ) = -1.5 x 2-1 = sign exponent fraction

31 More on Floating-Point
컴퓨터는 얼마나 정확할 수 있을까? - Digital의 한계 3𝜋+1 2 − 9 𝜋 2 +6𝜋+1 =? 계산기 프로그램(공학용 모드)을 이용하여 확인하라. Floating Point Operation 일반적인 2의 보수 연산 방법을 부동 소수점으로 표현된 수에도 그대로 적용할 수 있을까? (참고 : 3.07× × 을 십진수 연산에서 어떤 방식으로 구하는가?)

32 Text: ASCII Characters
ASCII: 128개의 문자를 7-bit 코드로 대응 출력 가능 문자 뿐 아니라 ESC, DEL 등의 출력 불가 문자 포함 00 nul 10 dle 20 sp 30 40 @ 50 P 60 ` 70 p 01 soh 11 dc1 21 ! 31 1 41 A 51 Q 61 a 71 q 02 stx 12 dc2 22 " 32 2 42 B 52 R 62 b 72 r 03 etx 13 dc3 23 # 33 3 43 C 53 S 63 c 73 s 04 eot 14 dc4 24 $ 34 4 44 D 54 T 64 d 74 t 05 enq 15 nak 25 % 35 5 45 E 55 U 65 e 75 u 06 ack 16 syn 26 & 36 6 46 F 56 V 66 f 76 v 07 bel 17 etb 27 ' 37 7 47 G 57 W 67 g 77 w 08 bs 18 can 28 ( 38 8 48 H 58 X 68 h 78 x 09 ht 19 em 29 ) 39 9 49 I 59 Y 69 i 79 y 0a nl 1a sub 2a * 3a : 4a J 5a Z 6a j 7a z 0b vt 1b esc 2b + 3b ; 4b K 5b [ 6b k 7b { 0c np 1c fs 2c , 3c < 4c L 5c \ 6c l 7c | 0d cr 1d gs 2d - 3d = 4d M 5d ] 6d m 7d } 0e so 1e rs 2e . 3e > 4e N 5e ^ 6e n 7e ~ 0f si 1f us 2f / 3f ? 4f O 5f _ 6f o 7f del

33 ASCII 코드의 특징 십진수 기호 (‘0’, ‘1’, …)과 ASCII 코드는 어떤 관계인가?
대문자('A', 'B', …) 와 그에 대응한 소문자 ('a', 'b', …)의 ASCII 코드 값 차이는? 2개의 ASCII 문자가 있을 때, 알파벳 순서로 표현 할 경우 어떤 문자가 앞에 오는지 알 수 있는가? 128개의 문자로 충분할까? 한글은? 한자는 ? 컴퓨터에서 한글 표현의 문제? – Python 프로그래밍에서 소개

34 Other Data Types Text String Image Sound NULL(0) 문자로 끝나는 일련의 문자열로 표현
화소(Pixel)들의 배열(Array)로 표현 흑백 : 1 bit (1/0 = 검은색/흰색) 컬러 : 컬러 요소 별로 표현, 예) 적,녹,청(RGB) 요소 별로 8 bits 할당 기타 속성 : 투명 Sound 아날로그 신호로 표현 되는 소리 정보를 이산 디지털 값으로 표현하기 위해 일정 시간 간격마다 소리 값을 샘플링 PCM – Pulse Coded Modulation


Download ppt "Bits, Data Types, and Operations"

Similar presentations


Ads by Google