포인터 타입 캐스팅

sesame·2022년 2월 21일
0

교육

목록 보기
34/46

2 byte(short)나 4byte (int) 경우에는 htons(), htonl() 이나 ntohs(), ntohl() 을 사용
8byte(64bit에서)는 아직까지는 직접 만들어 사용

// host -> network byte order  (big endian)
long long htonll(long long llvalue){
        printf("htonl: %llX\n", (long long)htonl(llvalue) << 32);
        return (((long long)htonl(llvalue) << 32) + htonl(llvalue >> 32));
}

// network byte order -> host  (little endian)
long long ntohll(long long llvalue){
        printf("ntohl: %llX\n", (long long)ntohl(llvalue) << 32);
        return (((long long)ntohl(llvalue) << 32) + ntohl(llvalue >> 32));
}

left shift 연산자 <<
비트값을 주어진 숫자만큼 왼쪽으로 이동 시킨 후 빈자리는 0으로 채움

 << 연산결과
 int num1 = 3
 num1 << 2; // num1 의 결과 값 3의 비트열을 2칸 왼쪽으로 이동한다
 //
 num1 = 0000 0011
 num1 = 0000 1100 // num1 의 결과 값이 3에서 12로 변한다

right shift 연산자 >>
비트값을 주어진 숫자만큼 오른쪽으로 이동 시킨 후 빈자리는 정수 a의 최상의 부호비트와 같은 값으로 채움

> 연산결과
 int num1 = 9
 num1 >> 2; // num1 의 결과 값 9의 비트열을 2칸 오른쪽으로 이동한다
 //
 num1 = 0000 1001
 num1 = 0000 0010 // num1 의 결과 값이 9에서 2로 변한다


포인터 타입 캐스팅

0개의 댓글