안 쓰던 블로그

컴퓨터구조-컴퓨터 정보 표현(2진수 논리연산, 1의 보수, 2의 보수) 본문

컴퓨터 구조

컴퓨터구조-컴퓨터 정보 표현(2진수 논리연산, 1의 보수, 2의 보수)

proqk 2020. 4. 19. 12:30
반응형

컴퓨터에서 정보 표현 단위

-비트 Bit: 컴퓨터 정보표현의 기초 단위, 2진법에서 데이터 표현하는 단위 0과 1

-바이트 Byte: 비트들로 구성됨 1byte = 8bit

-워드 Word: 바이트들로 구성됨 1word = 2Byte or 4Byte(컴퓨터 마다 다름)

 

진법

10진법: 인간이 사용하는 수의 체계, 0~9를 사용한다

2진법: 컴퓨터에서 사용하는 수의 체계, 0/1을 사용한다

16진법: 0~9, A,B,C~F까지 사용한다

 

ex) 10진수 12는 2진수로 1100이고 16진수로는 C다

10진수 20은 2진수로 0001 0100이고 16진수로는 14다

10진수 248은 2진수로 1111 1000이고 16진수로는 F8이다

 

10진수->부호 없는 2진수 변환

10진수 값을 2로 연속해서 나눈 나머지값을 다 이어 붙이면 2진수가 됨

 

ex) 10진수 53을 부호 없는 2진수 110101로 변환하는 과정

 

아니면 자릿수를 세는 방법도 있다

2진수는 오른쪽 끝부터 1,2,4,8,16..으로 늘어나니까

53은 1+4+16+32로 1*2^0+1*2^2+1*2^4+1*2^5니까 110101

 

10진수->부호 있는 2진수 변환

최상위 비트가 부호를 나타낸다(0이면 양수 1이면 음수)

 

1) 부호화 크기 표현

n비트로 구성된 2진수가 있으면 최상위 비트가 부호 비트, 나머지 n-1비트들은 수의 절대 크기

 

ex) 10진수 +9는 2진수로 (0 0001001)

10진수 -9는 2진수로 (1 0001001)

 

10진수 +0은 2진수로 0 0000000

10진수 -0은 2진수로 1 0000000

 

2) 보수를 이용한 표현

최상위 비트는 역시 부호 비트

 

-1의 보수 표현: 부호 없는 2진수에다가 모든 비트를 반전하고 부호 비트를 더함

-2의 보수 표현: 1의 보수한 결과값에다가 1 더함 

 

10진수 +9는 부호 없는 2진수로 0 0001001

1의 보수를 하면(비트 반전) 1 1110110 이고 10진수 -9가 된다

2의 보수를 하면(1의 보수+1) 1 1110111 이고 10진수는 똑같이 -9다

 

10진수 +35는 부호 없는 2진수로 0 0100011

1의 보수를 하면(비트 반전) 1 1011100 이고 10진수 -35가 된다

2의 보수를 하면(1의 보수+1) 1 10111101 이고 10진수는 똑같이 -35다

 

2진수 표현 범위

2의 보수를 이용해서 3비트 이진수를 표현하면 아래와 같다

 

+3 = 011

+2 = 010

+1 = 001

+0 = 000

-1 = 111

-2 = 110

-3 = 101

-4 = 100

 

즉 표현할 수 있는 범위는 -2^(3-1) ~ +2^(3-1)-1

정리하면 n비트로 표현할 수 있는 수의 범위는 -2^(n-1) ~ +2^(n-1)-1 가 된다

 

부호 있는 8비트 이진수 표현

부호화 크기 표현 10000001(-2^7-1)(-1)~0111111(2^7-1)(127)

1의 보수: 11111110(-2^7-1)(-1)~01111111(2^7-1)(127)

2의 보수: 11111111(-2^7)(-1)~01111111(2^7-1)

 

근데 2의 보수는 음수 0이 없어서 표현 가능한 음수 개수가 1의 보수보다 1개 더 많다

색깔 부분은 오버플로우가 난 곳인데, n비트 데이터가 표현할 수 있는 범위를 넘는 수에 접근하려고 하면 반대쪽 끝 값이 임의로 출력된다

 

2진수의 논리 연산

1. 기본 논리 연산

-AND연산: 모든 입력값이 모두 1인경우 1, 아니면 0

-OR연산: 모든 입력값 중 하나라도 1인 경우 1, 두 입력값이 모두 0일 경우만 0

-Exclusive-OR(XOR)연산: 모든 입력값이 모두 동일한 경우에 0, 아니면 1

-NOT 연산: 주어진 입력값의 반대값이 결과값

 

 

2. 응용 논리 연산

-Selective-set(선택적 세트) 연산

선택된 특정 비트를 1로 만드는 OR연산을 한다

ex 입력값 A의 하위 4비트를 모두 1로 만든다

 

 

-Selective-complement(선택적 보수) 연산

선택된 특정 비트를 1의 보수로 변경하는(비트 반전하는) 연산

ex 입력값 A의 하위 4비트 모두 비트 반전

 

 

-Mask(마스크) 연산

선택된 특정 비트들을 0으로 만드는 연산

ex 입력값 A의 상위 4비트를 모두 0으로 만든다

 

 

-Insert(삽입) 연산

입력값 내 특정 위치에 새로운 비트값들을 삽입하는 연산

ex 입력값 A의 하위 4비트에 1100을 삽입함

 

 

-Compare(비교) 연산

두 입력값을 비교하는 연산

ex 입력값 A와 B의 비트들을 비교해서, 같으면 0 출력 다르면 1출력

 

 

-Circular shift(순환 이동)

최상위 혹은 최하위에 있는 비트가 반대편 끝에 있는 비트 위치로 이동하는 식으로

비트가 회전하는 이동

 

순환 좌측 이동

 

순환 우측 이동

 

 

-Arithmetic shift(산술적 이동)

부호비트는 유지하고, 수의 크기를 나타내는 비트들만 이동

 

산술적 좌측 이동

 

산술적 우측 이동

 

 

 

확인 문제

1. 10진수 -4를 2의 보수로 변환하면? 4비트 기준

답: 11100

+4는 0 0100

1의 보수는 반전: 1 1011

2의 보수는 +1: 1 1100

 

 

2. 10진수 -5를 2의 보수로 변환하면? 4비트 기준

답: 11011

+5는 0 0101

1의 보수는 반전: 1 1010

2의 보수는 +1: 1 1011

 

 

3. 어떤 수와 2의 보수를 +연산하면 마이너스 연산을 할 수 있다(참고로 컴퓨터에는 마이너스 연산이 없다)

참고로 마이너스 연산을 할 때, 두 수를 +연산한 결과값이 한 자릿수가 늘어났으면 가장 왼쪽 비트를 버리고, 자릿수가 그대로라면 부호 비트 제외 2의 보수를 취한다

1번에서 계산한 -4의 2의 보수를 가지고 5 - 4 연산을 하는 과정은?

답:

5는 0 0101

-4의 2의 보수는 1 1100

 

    0 0101

+  1 1100

-------------

    100001

 

한 자릿수가 늘었으므로 가장 왼쪽 비트를 날린다

1 00001->0 0001

 

0 0001: 1 이 나옴

 

 

4. 1번에서 계산한 -5의 2의 보수를 가지고 4 - 5 연산을 하는 과정은?

답:

4는 0 0100

-5의 2의 보수는 1 1011

 

    0 0100

+  1 1011

-------------

    1 1111

 

자릿수의 변경이 일어나지 않았으므로 2의 보수 취한다

1 1111->1 0000(1의 보수, 부호 비트 제외)->1 0001(2의 보수)

 

1 0001: -1 이 나옴

반응형
Comments