비트 필드 및 대소 단 문제
2418 단어 크기
#include <stdio.h>
typedef struct bitstruct {
int b1:5;
int :2;
int b2:2;
} bitstruct;
int main()
{
bitstruct b;
memcpy(&b, "EMC EXAMINATION", sizeof(b));
printf("%d, %d
", b.b1, b.b2);
return 0;
}
결과:
5, -2
분석: 1) x86 시리즈 의 CPU 는 모두 작은 단자 이다.2) 비트 필드 의 정의 에 따라 b 가 메모리 공간 을 차지 하 는 9 개의 bit 3) 'E' 의 ASCII 값 은 0x 45 이 고 이 진 은 0100 0101 이 며 'M' 의 ASCII 값 은 0x4D 이 고 이 진 은 0100 10114) 은 작은 엔 드 시스템 에서 높 고 낮은 원칙 (높 은 비트 바이트 는 높 은 주소 에 저장 하고 낮은 비트 바이트 는 낮은 주소 에 저장) 에 따라 b 중위 도 메 인 b1 은 메모리 낮은 주소 에 저장 된다.
b2 메모리 의 고지 대 에 저장 합 니 다.5) 메모리 에 한 바이트 의 낮은 bit 를 메모리 의 낮은 bit 주소 에 분포 하고 32 비트 시스템 에 있다 고 가정 합 니 다.
0x00001000
bit0
1
0x00001000
bit1
0
0x00001000
bit2
1
0x00001000
bit3
0
0x00001000
bit4
0
0x00001000
bit5
0
0x00001000
bit6
1
0x00001000
bit7
0
0x00001001
bit8
1
b1 사용 bit 0 ~ bit4bit 5 ~ bit 6 비 우기 b2 사용 bit 7 bit 8 이렇게 b1 의 바 이 너 리 값 은: bit 4 bit 3 bit 2 bit 1 bit 0 - > 00101 - > 5b2 의 바 이 너 리 값 은: bit 8 bit 7 - > 10 - > 기호 수 변환 패 치 표시 10 - > - 2