int a : 1;
이 선언은 a를 1bit만 사용을 하겠다는 의미입니다.
만약에 연이어서...
int b : 1;
를 선언 하게 되면은 int 의 사이트 안에 a, b 를 다 포함이 가능하기 때문에 여전히 두 변수는 int - 4byte 안에 값이 선언되고 사용이 되게 됩니다.
만약 a and b를 16-bit 보다 크게 선언을 하게 되면은 각각 다른 int - 4byte에 선언이 되게 됩니다.
그러므로 8-byte를 사용하게 됩니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
이런 식인대요-_-
이녀석의 쓰임세는 스트럭쳐 안을 각각의 bit별로 조작하려고 쓰는대요.
일단 array,address, pointer, reference(C++에서) 가 모두 안됩니다.
그리고 최대로 다룰수 있는 비트 수는 컴파일러마다 틀리지만 호환성 유지를 위해 32비트 까지만 쓰는걸로 알고 있습니다.
또 int 씨리즈 (unsigned, signed) 만 써야 합니다.(이건 정확히 모르겠네요-_-; )
또한 이름은 없어도 되고-_-; 각 32비트로 정렬이 됩니다.
게다가 0비트 일 경우는 반드시 이름이 없어야 하고 또 초기화할수도 없고 레퍼런싱 할수도 없습니다.
이게 무슨말인고 하니
struct S{
int a : 1;
int b : 1;
int : 0;
unsigned : 3;
int c ;
} s
요럴 경우에 a는 1비트 b는 1비트 그다음 이름없는 0비트 에서 32-2 해서 30비트가 빈공간으로 넘어갑니다. 그다음 이름없는 공간에 3비트 C에 int 사이즈만큼.
이렇게 잡힙니다-___-;
[code:1]int a : 1;[/code:1]이 선언은 a
int a : 1;
이 선언은 a를 1bit만 사용을 하겠다는 의미입니다. 만약에 연이어서...int b : 1;
를 선언 하게 되면은 int 의 사이트 안에 a, b 를 다 포함이 가능하기 때문에 여전히 두 변수는 int - 4byte 안에 값이 선언되고 사용이 되게 됩니다.만약 a and b를 16-bit 보다 크게 선언을 하게 되면은 각각 다른 int - 4byte에 선언이 되게 됩니다.
그러므로 8-byte를 사용하게 됩니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
Bit Fields 라는겝니다..
요게... 좀 저두 해깔리는 문법이긴 한대...
일단 아는걸 풀어 놓자면..
이녀석의 문법은 다음과 같습니다.
이런 식인대요-_-
이녀석의 쓰임세는 스트럭쳐 안을 각각의 bit별로 조작하려고 쓰는대요.
일단 array,address, pointer, reference(C++에서) 가 모두 안됩니다.
그리고 최대로 다룰수 있는 비트 수는 컴파일러마다 틀리지만 호환성 유지를 위해 32비트 까지만 쓰는걸로 알고 있습니다.
또 int 씨리즈 (unsigned, signed) 만 써야 합니다.(이건 정확히 모르겠네요-_-; )
또한 이름은 없어도 되고-_-; 각 32비트로 정렬이 됩니다.
게다가 0비트 일 경우는 반드시 이름이 없어야 하고 또 초기화할수도 없고 레퍼런싱 할수도 없습니다.
이게 무슨말인고 하니
요럴 경우에 a는 1비트 b는 1비트 그다음 이름없는 0비트 에서 32-2 해서 30비트가 빈공간으로 넘어갑니다. 그다음 이름없는 공간에 3비트 C에 int 사이즈만큼.
이렇게 잡힙니다-___-;
자세하게 저도 몰라서 두서없이 쓰게 된듯-_-;
다른분이 좀더 자세하게 올려주시면 쿨럭..
새 생각 :)
추가정보.
http://www.msi.umn.edu/sp/sp_manuals/cc++/doc/language/ref/rucldst.htm
자세하게 나와 있더군요-_-;
새 생각 :)
댓글 달기