…™업무일지。

[smart]이재우-20140320

엔지니어2 2014. 3. 20. 08:38
728x90

2014.03.20 수업 ver1_0a.docx

 

2014. 03. 20 수업 및 과제 


1 Hexa View 

  - 주소/문자/A   - 주소(address)범위: 4 byte, 32bit, 16진수 FFFF FFFF, 10진수(4,294,967,295)

  - CPU BUS 라인에 따라 메모리 처리 용량이 결정

 

 2 IEEE 754 - floating point (부동소수점)

IEEE 754는 컴퓨터에서 소숫점을 표현하기 위한 방법이다.


single precision은 32비트 즉 1워드에 저장하고


double precision은 64비트 즉 2워드에 저장한다.


이 비트를 3부분으로 나누어 부호, 소수부분, 지수부분으로 인식한다.

 

 (-1)^s * (1 + F) * 2^E

 

F : fraction

앞쪽 비트부터 2^-1, 2^-2... 를 의미한다.


E : exponent

지수부분 기본적으로 unsigned 이며 single precision에선 127, double에선 1023을 뺀다


S : sign

부호 0이면 양수, 1이면 음수


single [sign : 1bit][exponent : 8bit][fraction : 23bit]

double [sign : 1bit][exponent : 11bit][fraction : 52bit]

 

이 수를 single precision으로 보고 해석하면

 1 0111 1110 1000 0000 0000 0000 0000 000

 부호비트

 

 

 1

 0111 1110

 1000 0000 0000 0000 0000 000

이 수를 single precision으로 보고 해석하면


1 : 음수

64+32+16+8+4+2=126

0111 1110 = 126

E = 126 - 127 = -1


1000 0000 0000 0000 0000 000 = 2^(-1) = 0.5 => 1.5


답은 -1 * 1.5 * 2^(-1) = -0.75 가 된다.

 

[예제]

실수 : 3.25의 값 계산 

 

 메모리 실제

 저장 값

 00 00 50 40  (Little Addian 방식으로 저장 Intel PC)

 숫자 정리

 40 50 00 00

 2진수 변환 

 4     0      5     0     0     0     0      0

 0100 0000 0101 0000 0000 0000 0000 0000  => 4byte

 bit 별 기능

 부호비트 1bit

 지수부(2^E) => 8bit

 가수부(1 + F) => 23bit

 0 

  1000 0000

 1010 0000 0000 0000 0000 000 

 +

 128 64 32 16 8 4 2 1

 승수 128-127= 1 =>2^1승

 .1010 0000 0000 0000 0000 000

 => 1.1010 0000 0000 0000 0000 000 

 십진수로

 변환

 부호^s * (1 + F) * 2^E = 2^1 승 * 1.1010 0000 0000 0000 0000 000 = 11.010

                               = 1*(2^1)+1*(2^0).1*(2^-2) = 2+1.(1/4) = 3.25 

 

 

3 함수

[Code(함수), Data(전역변수), BSS(전역변수), Heap(동적할당), Stack(지역변수)]

메모리의 영역 5종류

 Code(함수)

 Data(전역변수)

 BSS(전역변수)

 Heap(동적할당)

 Stack(지역변수)

 남이 만든 함수를 가져오는 것(링크한다.)

 C에서 만든 함수는 어셈블리로 가면 _언더바가 붙는다(규칙).

 따라서 _언더바 없이 해석한다.

 함수도 심볼 테이블(형식 Type, 변수 Name, 주소 Address)에 들어 간다.

 변수 및 함수들의 주소는 한 곳에 몰려 있다.

 

3.1 Simbol Table(심볼 테이블)      

 Type 형식

 Name 변수, 함수 이름

 Address 주소

컴파일 처리 순서

*.c > *.i >*.asm >*.obj >*.exe

 *.c > *.i > 심볼 테이블에 해당

 

3.2 리눅스에서 함수의 형식을 알수 있는 방법

 

 

리눅스에서 함수의 형식을 알수 있는 방법

 명령어

 설명

 man 숫자 함수명

 메뉴얼 보기 *manual 약어 / 숫자:몇장(chpter) / 함수이름

 예) man 3 printf   ->printf(3) 장을 열다.  

 q

 메뉴얼 끝내기

 /abc

 단어 찾기

 

3.3 int printf(cons char *format, ....);

화면에 출력한 갯수를 반환한다.

int main(void);

int: 반환값의 Type

main: 이름

():인수/인자