비트 필드 및 대소 단 문제

2418 단어 크기
In little-endian systems, what is the result of following C program ?
 
#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

좋은 웹페이지 즐겨찾기