int iNum2=0xABCDEF07;
unsigned char *p;
p = &iNum1;
↑
형동등성
포인터를 기준으로 정수형은 경고가 생겨도 자료형이 비슷하면 적용된다!
경고를 해결하기위해 &iNum1 앞에 형변환연산자를 넣어준다.((unsigned char *))
포인터는 메모리를 보는 방식을 결정한다!
사람이 대소를 비교할때 숫자를 왼쪽부터 판단하고 계산을할때는 오른쪽부터 함
계산이 중요하기에 Value값 저장 방식은 1바이트 단위로 뒤에서부터 저장된다.
슈퍼컴퓨터는 논리연산이 중요하기에 Big Endian(엔디안)을 사용한다!
BigEndian | |||
start | end | ||
3 | 4 | 5 | 6 |
12 | 34 | 56 | 78 |
3 | 4 | 5 | 6 |
78 | 56 | 34 | 12 |
end | start | ||
little Endian |
실수 저장 방식
IEEE 754의 부동 소수점 표현은 크게 세 부분으로 구성되는데, 최상위 비트는 부호를 표시하는 데 사용되며, 지수 부분(exponent)과 가수 부분(fraction/mantissa)이 있다.
- 먼저, 부호와 지수를 가수로 나누어야 한다.
- 소수점을 왼쪽으로 이동시켜, 왼쪽에는 1만 남게 만든다. 예를 들면 101.01 = 1.0101x2² 과 같다. 이것을 정규화된 부동소수점 수라고 한다.
- 가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다. 결과는 1010 1000 0000 0000 0000 0000이 된다.
- 지수는 2이므로, Bias를 더해야 한다. 32비트 IEEE 754 형식에서는 Bias는 127이므로 2+127 = 129이 된다. 이진법으로 변환하면 1000 0001이 된다.
5.25를 2진수로
101.01 -> 1.0101x2²(정규화된 부동소수점 수)
0.25
x 2
------
0.5<--0.5의 앞자리 0
x 2
------
1.0<-1.0의 앞자리 1
절대값 부호방식(Magnitude)
예제
−118.625 (십진법)을 IEEE 754 (32비트 단정도)로 표현해 보자.
- 먼저, 부호와 지수를 가수로 나누어야 한다.
- 음수이므로, 부호부는 1이 된다.
- 그 다음, 절댓값을 이진법으로 나타내면 1110110.101이 된다. (이진기수법을 참조)
- 소수점을 왼쪽으로 이동시켜, 왼쪽에는 1만 남게 만든다. 예를 들면 1110110.101=1.110110101×2⁶ 과 같다. 이것을 정규화된 부동소수점 수라고 한다.
- 가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다. 결과는 11011010100000000000000이 된다.
- 지수는 6이므로, Bias를 더해야 한다. 32비트 IEEE 754 형식에서는 Bias는 127이므로 6+127 = 133이 된다. 이진법으로 변환하면 10000101이 된다.
이 결과를 정리해서 표시하면 다음과 같다.
댓글 없음:
댓글 쓰기