반응형

사실 코드라는 책 자체가 굉장히 점진적으로 설명하는 내용이라,,, 크게 별다른 내용은 없다.

1,2장의 내용을 요약하면 다음과 같다.

 

코드는 컴퓨터와 사람간의 의사소통을 위한 기호체계를 의미하며 이는 2가지 기호의 조합으로 표현가능하다.

 

 

 

이내용만 정리하기 좀 그러니,

한 권으로 읽는 컴퓨터 구조와 프로그래밍

을 좀 정리해보도록 하겠다.

 

1)

일단 2진수에서 가장 오른쪽 비트를 가장 작은 유효 비트, lsb라고 부르고,

가장 왼쪽 비트를 가장 큰 유효 비트 MSB라고 부른다.

 

1___00001011010_1

MSB                         LSB

 

비트수를 맞추기 위해 추가된 0들을 리딩제로라고 부름.

 

 

2) 2진수들의 덧셈 

논리연산을 표현가능하다.

두비트를 서로 더한결과는 XOR한값이고, 올림은 두비트를 AND한 값과 같다.

예를들어, 10 + 11을 한다고 하자.

 

첫째자리에서, A xor b 하니 1이니까, 1

올림여부를 체크하려 A and B하니까 0이므로 올림 없다.

둘째자리에서 A xor b 하니 0이니까 0

올림여부를 체크하려 A and B하니까 1이므로 올림있다.

따라서 101.

 

만약 비트로 표현할수잇는범위를 넘어서면 오버플로,

MSB에서 올림이 발생했다는 뜻.

(*컴퓨터에는 condition code register가 있어서 이상한 정보를 담아두고, 오버플로 비트가 있다. 이값을 보면 오버플로가 발생했는지 알수있다.)

오버플로 발생시, 1001 + 1000 가 0001 이 된다.

 

MSB 왼쪽에서 1을 빌려오는 경우 언더플로라고 한다.

 

3) 음수 표현

음수표현은 여러가지 방식으로 할 수 잇음.

MSB를 부호로 표현하면, 0부터의 거리로 크기를 표현함.

그런데 이방법은 0을표현하는방식이 두가지라서 낭비되고, 이렇게 될시 XOR과 and만으로 덧셈계산을 할 수 없다.

 

그런데 1의 보수 표현법으로 음수를 표현할수있다.

양수의 모든 비트를 뒤집는것이다.

not 연산을 통해 보수를 얻는다.

001 이 1이면,

110 이 -1 이다.

0111이 7이므로

1000이 -7이다.

 

문제점이 2가지 존재

--> 여전히 0 2가지로 표현.

--> 덧셈쉽지않음. 순환 올림(end-around carry)

 

0010 + 1110

0001

--> 복잡.

--> 순환올림을 처리하기 위한 하드웨어를 추가해야함.

 

2의보수

특별한 하드웨어 추가없이, xor과 and연산만 사용해야한다면?

 

각비트에 not을 취하고 +1 하는방법.

0111 --> 7

1001 --> -1

 

이방법은 2가지 문제가 없을까?

우선 0의 두가지 표현.

0000 = 1111 +1 

이어야하는데, 10000이므로, 1절삭되면 0000과 같다.

즉, 하나다.

 

 

실수를 표현하는 방법

고정소수점 vs 부동소수점.

 

고정소수점 = 1/2 + 1/4+ 1/8 이런식으로 표현하는방법

그러나 메모리가 너무 많이 든다. (너무 많은 비트 필요.)

 

부동소수점. floating point

 

일단 가수와 지수라는 개념.

가수: 소수좀 왼쪽이 하나뿐인 소수 

지수 : 밑수를 거듭제곱한 값을 곱하는 방식

이렇게 소수를 표현가능함

 

1.2 * 10^-3

 

가수부분만 보면, 소수점의 위치가 같아보임.

풀어쓰면 항상 달라짐.

고정소수점에서는 소수점 바로 왼쪽이 항상 1의자리이지만,

부동소수점에서는 아니다.

따라서,

1.111 = (1+1/2) * (2**3)

이렇게 하면 0 표현하는게 4가지 방법임.

6.5를 표현하는 비트패턴이 없음. --> 오차 발생.

 

 

IEEE 부동소수점 표준.

포인트 정밀도 높이기

--> 정규화

가수를 조정해서 맨앞에 0이 없게 만듬.

--> 가수의 맨왼쪽 비트는 무조건 1이므로 생략할것.

 

 

single precision 부동소수점 = float

--> 32비트 사용 7비트 정밀도

double prescision부동소수점 = double

64비트 사용 15비트 정밀도로 표현

 

편향된 지숫값으로 + - 해결함.

기본정밀도 127 이 

2배 정밀도 1023

 

 

반응형

+ Recent posts