ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [시스템프로그래밍] 64비트 기반 프로그래밍2
    학점은행제/시스템프로그래밍 2021. 1. 18. 16:09

     

    데이터 손실 1

    • 데이터를 송수신하는 버스의 크기가 64차선이냐 32차선이냐에 따라 64비트, 32비트를 구분 할 수 있다
    • 소주잔을 맥주잔에 담을 수 있지만 맥주잔을 소주잔에 담을 수 없듯이 정수형 크기 40바이트를 4바이트에 담을 수 없다.
    • 주소값을 출력하기 위해 int 변수 지정
    • 32 비트 시스템에서 정상 출력되는 int, pointer -> 4byte
    • 64비트 pointer -> int, long 4byte 정수형 형변환 불가능
    • *포인터(pointer)는 프로그래밍 언어에서 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말한다. 
    #include <stdio.h>
    
    int main(void)
    
    {
    
    	int arr[10]={0}; // 배열의 크기 10자리를 만들어 놨다 - 40바이트
    
    
    
    	//데이터 손실이 발생
    
    	int arrVal = (int)arr; //배열의 명 - 4바이트
    
    	printf("pointer:%d\n", arrVal);
    
    	return 0;
    
    }

     

    데이터 손실 2

    64비트 시스템

    • LLP64가 기본 모델
    • int : 4byte, pointer : 8byte 로 표현함
    • 형변환 과정에서 데이터 손실 발생
    • 32bit는 메모리 크기가 4GB 임
    • 따라서 32bit 로 4GB 이상 표현 불가능

     

    Windows 스타일 자료형을 사용하는 이유

    • 다른 시스템으로의 이식성을 고려할 경우
    • 프로젝트의 성격 및 특성에 맞게 새로운 이름으로 자료를 정의함
    • # 전처리지시자 

     

    기본 자료형에 대한 MS 정의

     

    선언의 편리성

    • typedef 는 복잡한 선언을 단순화함 ex ) typedef undigned int size_t
    • unsined int -> size t 간결하고, 보다 강한 의미를 부여함
    • *typedef는 C와 C++ 프로그래밍 언어의 예약어이다. 다른 자료형별명을 만들기 위해 사용된다.

     

    확장의 용이성

    • 프로그램 전체에 적용된 내용 변경 시
    • typedef unsigned char STR_LEN 변경 전
    • typedef unsigned int STR_LEN 변경 전
    • 아스키코드8비트(=1바이트)의 공간만 있으면 문자를 표현 할 수 있다
    • 여러군데 수정해야할 것들을 한번에 재정의 할 수 있어서 편리하다

    *Unsigned : 부호가 없는

    *signed : 양수 또는 음수 부호가 있는

     

     

     

    포인터에 대한 Windows 정의

    자료형에 대응하는 포인터 자료형

    • * : 아스트리커
    • P : 포인터 변수를 의미함
    • U : unsigned
    • INT : 부호가 있는 정수형
    • UINT : 부호가 없는 정수형

     

    32비트와 64비트 파일을 다운로드하는 경로

    • 유니코드와 아스키코드(128개)를 공통으로 지원함
    • 한글은 받침도 많아서 아스키코드로는 표현이 불가능함
    • 아스키코드 : 숫자, 영문자, 특수문자만 지원하고 나머지는 지원이 불가능함
    • 아스키 코드로는 한국어, 프랑스어 표현 불가능
    • 유니코드를 사용하기 때문에 전세계 언어를 표현할 수 있게됌

     

    Polymorphic 자료형

    • "다양한 모습이 있는" 또는 "다형적" 이라는 뜻
    • 어쩔때는 32비트 어쩔때는 64비트로 변화하는 자료형
    • 상황, 환경에 따라 유동적으로 변형됌
    • PTR 포인터 값 기반의 산술연산을 위해 정의된 자료형임
    • 32비트와 64비트는 포인터 정밀도가 달라 발생하는 문제 해결

     

    댓글

Today
Designed by Danbee Park.