Computer Science Lectures/Introduction to Computer Systems - CMU

Lecture 02: Bits, Bytes, and Integers

오렌지색 귤 2022. 10. 10. 17:36
반응형

비트는 특정 구간대의 전기 신호만 해당 신호로 받아들이고 0.2V ~ 0.9V 사이의 전압은 신호로 받아들이지 않아서 노이즈 등에 영향을 받지 않을 수 있다.

 

 

 

binary에서 쓰이는 소수점은 decimal에서의 소수점과 다르다.

  • 1.20 (10진법) 에서 소수 첫째 자리는 1 / 10을 의미
  • 1.20 (2진법) 에서 소수 첫째 자리는 1 / 2을 의미

 

 

아래 도표 익숙해지기

 

bit 및 bit 연산을 이용해서 Set를 표현하고 조작할 수 있다. (비트 마스킹과 유사한 방식)

  • File I/O (C library) 에서 시스템에 어떤 파일들이 input으로 주어질 수 있는지를 판단할 때도 흔히 사용되는 방식

 

 

Logical Operations in C

  • &&, ||, ! 연산자는 항상 0이나 1만 반환한다
  • 0은 "False", nonzero는 "True"로 본다

항상 0이나 1을 반환한다는 것을 모른다면 반드시 틀릴 문제들

 

Shift Operations

  • Left Shift : 왼쪽의 비트를 날려버리고 오른쪽에는 항상 0을 채워준다
  • Right Shift
    • Logical Shift : Fill with 0's on left
    • Arithmetic Shift : Replicate most significant bit on left
Quiz.  x << 8 은??

예상 답안 : 하나의 byte는 8 bit을 가지므로 어떠한 수가 x에 담겨있든 8번 shift되면 0이 될 것이다.

실제 답안 : 대부분의 머신에서는 불필요한 연산을 줄이기 위해 shift를 해주는 수를 mod 8 연산해준다. 따라서 x

 

 

Encoding Integers

  • Unsigned와 Signed에서 수를 변환하는 법은 쉽지만 공식으로 쓴다는게 멋있어서..

 

 

Numeric Ranges

  • 범위는 쉽지만 Decimal과 Hex 간 변환을 연습해보고자..

 

 

Unsigned & Signed Numeric Values

  • C에서는 Unsigned와 Signed 간의 변환 과정을 쉽게 이해해야 한다
  • Equivalence
    • Same encodings for nonnegative values
  • Uniqueness
    • Every bit pattern represents unique integer value
    • Each representable integer has unique bit encoding

 

 

Mapping Between Signed & Unsigned

  • 당연한 말이지만 reinterpret하는 방식에 대해서 생각하고 넘어가도록
  • 양수에서는 그대로 표현된다
  • 음수에서는 T2U 과정에서는 +16, U2T 과정에서는 -16을 해준다 (4비트라고 가정)

 

 

Casting Surprises

  • 비교 연산에서 두 수가 모두 signed라면 signed로 연산
  • 비교 연산에서 하나의 수라도 unsigned라면 나머지 수를 unsigned로 캐스팅 후 연산

W = 32 일 때의 예시

 

Quiz. 아래의 절대값 반환 코드에서 x에 Tmin이 들어간다면?

if (x < 0)
    return -x;
else
    return x;​


Answer : Tmin이 반환된다

 

요약

1. |Tmax| = |Tmin| - 1
2. Umax = 2 * Tmax + 1
            - Tmax : 0111....1
            - 2 * Tmax : 111....10
3. Signed와 Unsigned간 캐스팅
            - Bit pattern is maintained
            - But reinterpreted
            - Can have unexpected effects : adding or subtracting 2^w

 

Quiz. What happened if i is Unsigned int?

for (i = n-1; i>= 0; i--)
	func(a[i]);​

 

Answer : loop forever
Quiz. What happened if i is signed int?
for (i = n-1; i - sizeof(char) >= 0; i--)
	func(a[i]);​

Answer : sizeof method returns unsigned value. So comparison will be evaluated as unsigned.

 

 

 

Sign Extension

  • 비트 확장 시 sign bit가 0이든 1이든 해당 수로 확장된 비트에 모두 복사해야 값이 유지된다

 

Quiz. ffff0123은 음수인가? (바로 판단하기)

Answer : f를 binary로 변환하면 1111이므로 음수이다. 추가적으로 ffff이면 1이 16번 연속되므로 제법 0에 가까운 값일 것이다.

 

 

Sign Truncation

  • 비트 축소 시 왼쪽 비트는 모두 날려버린다
  • Unsigned : mod operation한 값과 동일
  • Signed : similar to mod

 

 


 

Lecture 02: Bits, Bytes, and Integers

 

scs.hosted.panopto.com

 

모든 이미지 파일은 해당 강의의 ppt 자료를 사용했습니다.

반응형