-> 블로그 이전

[컴퓨터구조론] 3장 기본문제

2022. 2. 2. 19:29Solution`/컴퓨터구조론

[3.1]

2의 보수 표현이 1의 보수 표현보다 더 널리 사용되고 있는 주요 이유는 무엇인가?

1. 산술 연산이 더 편리하다

2. 음수 표현이 가능하다

3. 10진수 변환이 더 용이하다

4. 표현할 수 있는 수의 개수가 하나 더 많다

1의 보수는 0을 표현하는 방법이 2가지
>> 2의 보수로 표현할 수 있는 수의 개수 = 1의 보수로 표현할 수 있는 수의 개수 + 1

 

 

[3.2]

10진수 '-75'에 대한 2의 보수 표현으로 올바른 것은 어느 것인가?

1. 11001011

2. 10110101

3. 10110100

4. 11001010

75 : 01001011
>> 1의 보수 : 10110100
>> 2의 보수 : 1의 보수 + 1 = 10110101

 

 

[3.3]

2의 보수 '11101000'을 10진수로 변환하면 어떤 값이 되는가?

1. -12

2. 48

3. -24

4. 232

방법 1)
-128 + (64 + 32 + 8) = -24

방법 2) 2의 보수 방법을 역으로 이용
11101000
>> 1의 보수 : 00010111
>> 1더하기 : 00011000 = 24
>> - 붙여주기 : -24

 

 

[3.4]

특정 비트들을 마스크(mask) 시키기 위하여 사용되는 논리 연산은 무엇인가?

1. AND 연산

2. OR 연산

3. XOR 연산

4. NOT 연산

마스크 연산 : 특정 bit들을 0으로 만들어주기 위해 수행하는 연산
>> B 레지스터 : 0으로 만들고 싶은 bit들을 0으로 설정 / 나머지는 1로 설정
>> A, B의 AND 연산을 통해 특정 bit들을 0으로 만들기

 

 

[3.5]

두 수를 비교하기 위하여 사용되는 논리 연산은 무엇인가?

1. AND 연산

2. OR 연산

3. XOR 연산

4. NOT 연산

두 레지스터의 bit들을 비교
>> bit가 같으면 A레지스터의 해당 bit를 0으로 설정
>> XOR 연산을 통해서 수행

 

 

[3.6]

A 레지스터에 '01101010'이 저장되어 있는 상태에서 B 레지스터와의 XOR 연산을 이용하여 상위 다섯 비트를 보수값으로 바꾸고자 한다. 레지스터 B에는 어떤 값을 넣어야 하는가?

1. 00000111

2. 11111000

2. 00001111

4. 11110000

특정 bit들을 보수값으로 변경 : 선택적-보수 연산
>> B 레지스터 : 보수값으로 변경할 bit들을 1로 설정 / 나머지 bit들은 0으로 설정

A 레지스터 : 01011011 >> 상위 다섯 비트를 보수값으로 변경
B 레지스터 : 11111000

 

 

[3.7]

A 레지스터에 2의 보수로 표현된 데이터 '10101101'이 저장되어 있을 때, 산술적 우측 시프트를 2번 수행한 결과는 다음 중 어느 것인가?

1. 00101011

2. 01010110

3. 11010110

4. 11101011

산술적 우측-시프트 : 부호 비트는 무조건 고정

(1) 10101101 >> 최상위 비트(부호 비트) 1은 시프트와 상관없이 무조건 고정
(2) 11010110
(3) 11101011 - result

 

 

[3.8]

A 레지스터에 '01011011'이 저장되어 있을 때, 좌측 순환 시프트를 1번 수행한 결과는 다음 중 어느 것인가?

1. 10101101

2. 10110110

3. 10110111

4. 00101101

좌측 순환 시프트 : 최상위 bit를 최하위 bit로 옮기고 나머지 bit들은 왼쪽으로 1칸씩 옮기기

01011011 >> 10110110

 

 

[3.9]

A 레지스터에 '01011011'이 저장되어 있고 C 플래그에 '1'이 저장되어 있을 때, SHRC 연산을 1번 수행한 결과는 다음 중 어느 것인가?

1. 00101101

2. 10101101

3. 10110111

4. 10110110

SHRC : 최상위 bit를 C플래그 값으로 설정하고 나머지 bit들은 오른쪽으로 1칸씩 이동

C(1), 01011011 >> 10101101

 

 

[3.10]

A 레지스터에 '01011011'이 저장되어 있고 C 플래그에 '0'이 저장되어 있을 때, RLC 연산을 2번 수행한 결과는 다음 중 어느 것인가?

1. 10101101

2. 00101101

3. 01101100

4. 10110110

RLC : 최하위 bit는 C플래그 값으로 설정하고, 나머지 bit들은 왼쪽으로 1칸씩 이동, 최상위bit의 값은 C플래그에 저장

C(0), 01011011
RLC 연산 수행 : C(0) 10110110
RLC 연산 수행 : C(1) 01101100

 

 

[3.11]

아래의 2의 보수 덧셈들 중에서 오버플로우가 발생하는 것은?

1. 0010 + 0110

2. 0100 + 0011

3. 1110 + 1010

4. 0011 + 1010

수식 연산 과정 오버플로우 판별
1. 0010 + 0110
C1 : 1
C2 : 0
>> 오버플로우 O
2. 0100 + 0011
C1 : 0
C2 : 0
>> 오버플로우 X
3. 1110 + 1010
C1 : 1
C2 : 1
>> 오버플로우 X
4. 0011 + 1010
C1 : 0
C2 : 0
>> 오버플로우 X

 

 

[3.12]

다음 중에서 정규화된 표현은 어느 것인가?

1. 0.001011 × 27

2. 0.101100 × 25

3. 1.011000 × 24

4. 1011.00 × 21

 

 

[3.13]

2진수 0.1011×25을 IEEE 754 표준 부동소수점 형식으로 표현하면, 가수(mantissa)의 처음 다섯 비트는 어떤 값이 되는가?

1. 10110

2. 01100

3. 00110

4. 01011

IEEE 754 표준 부동소수점 형식 : 바이어스 = 127 / 가수 필드 = 부동소수점 형식

0.1011 X 2^(5) --> 1.011 X 2^(4)

지수 필드 = 4 + 127 = 0000 0100 + 0111 1111 = 1000 0011
가수 필드 = 011 0000 0000 0000 0000 0000

 

 

[3.14]

2진수 0.1011×25을 IEEE 754 표준 부동소수점 형식으로 표현하면, 지수(exponent)는 어떤 값이 되는가?

1. 10000100

2. 10000101

3. 10000011

4. 00000100

IEEE 754 표준 부동소수점 형식 : 바이어스 = 127 / 가수 필드 = 부동소수점 형식

0.1011 X 2^(5) --> 1.011 X 2^(4)

지수 필드 = 4 + 127 = 0000 0100 + 0111 1111 = 1000 0011
가수 필드 = 011 0000 0000 0000 0000 0000

 

 

[3.15]

다음 중 부동소수점 덧셈 과정에서 필요하지 않은 연산은 어느 것인가?

1. 지수 조정

2. 정규화

3. 지수 덧셈

4. 가수 덧셈

 

 

[3.16]

다음 중 부동소수점 나눗셈 과정에서 필요하지 않은 연산은 어느 것인가?

1. 지수 조정

2. 정규화

3. 가수 나누기

4. 지수 뺄셈