@ 데이터는 저장되어 있는 형태에 따라서 그 종류가 결정되는 것이 아니고, 저장되어 있는 데이터를 어떻게 해석하느냐에 따라서 그 종류가 결정된다.

@ 정수를 표현하는 방식
    0 0 0 0 1 0 1 1
부호/데이터의 크기
가장 왼쪽에 존재하는 비트는 부호를 표현하는데 사용이 된다. 비트가 0이면 양수를 1이면 음수를 의미

@ MSB(Most Significant Bit) : 부호를 결정하는 가장 왼쪽에 존재하는 비트를 가리킴

@ 2의 보수 구하기

양의 정수 5는     00000101
이것의 1의 보수  11111010 (0을 1로, 1을 0으로 치환)
2의 보수는         11111011(끝에 1을 더해줌)

@ 음의 정수를 표현

양의 정수 값에 2의 보수를 취하면 그것이 바로 음의 정수 값이 된다.
음의 정수를 구한후 이값이 맞는지 검산은 양의 정수와 음의 정수를 합하여
0이 나오면 맞는것이다( 5+(-5) = 0)

    0000  0101
+) 1111  1010
------------
  1 0000 0000
컴퓨터는 N바이트 덧셈 연산을 할경우 그 결과도 N 바이트로 만들어 낸다. 즉 1바이트 덧셈연산의 결과는 1바이트여야한다(8자리로 유지) 위의 덧셈과정에서 발생한 올림수(carry)는 버려진다. 즉 결과는 0이되어 음의 정수를 맞게 구한것이다.

음의 정수로 표현된 값을 10진수로 표현하려면

음의 정수 ->1의 보수 -> +1 그 값을 구하여 10진수로 구하고  앞에 - 부호를 붙인다.

10001011-> 01110100 -> 01110101 -> 117 -> -117

@ 1바이트로 표현될 수 있는 최대값은 01111111 즉 127이다. 반대로 최소값은 -127(10000001)이라고 생각할 수 있다. 그럼 10000000는 얼마인가? 보통 컴퓨터 시스템에서는 이를 -128로 인식한다 그래서 1바이트로 표현할 수 있는 최소값은 -128이 된다.

@ IEEE, 아이 트리플 이 (Institute of Electrical and Electronics Engineers) 는 미국의 전기전자공학의 최대 기술조직으로서 주요 표준을 결정하고 발전시키는 역할을 담당한다. 실수 표현방식에 관한 표준도 정의

@ int는 10진수 정수를 저장할 수 있는 메모리 공간을 할당하겠다는 의미!! 즉 변수의 데이터 저장 및 참조방식에 대한 선언

@ 키워드(Keyword) : 키워드란 C언어의 문법을 구성하기 위해서 특별한 의미를 담아, 그용도를 미리 약속해 둔 단어를 의미(int,double, void, return 등)

@ %f는 10진수 실수를 표현하는 서식문자이다. 나중에 한번에 정리!!

@ 컴퓨터가 실수를 표현한느 방식은 아주 가까운 근사치를 표현하는 방식이다. 즉 정밀도를 포기하고 표현의 범위를 넓히기 위해서다. 이러한 정밀도의 포기는 오차를 발생시키면 이를 "부동소수점 오차" 라고 한다.

@ float형 보다는 double형이 더 정확한 계산이 가능하다. 

부동소수점 오차를 보여주는 소스

#include <stdio.h>
int main(void)
{
 int i=0;
 float real;
 real = 0;
 for(i=0;i<30;i++)
  real = real+0.1;
 printf("0.1을 30회 더한 결과 : %f \n", real);
 real=0;
 for(i=0;i<50;i++)
  real=real+0.1;
 printf("0.1을 50회 더한 결과 : %f \n", real);
 real=0;
 for(i=0;i<100;i++)
  real=real+0.1;
 printf("0.1을 100회 더한 결과 : %f \n", real);
 return 0;
}

Posted by Taoist
,