2011-11-24 3 views
2

C에서 비트 필드에 액세스하지 못하게하는 이유는 시스템 단어가 정렬되지 않은 주소가 아닐 수 있습니다. 또는 바이트의 주소를 가져 오는 것이 의미가 없기 때문에 ...? (이 유형의 포인터 연산은 어색 할 것입니다.)주소에서 C의 비트 필드에 액세스

+0

"약간의 주소"에 어떤 가치가 있다고 생각하십니까 ?? –

+0

비트가있는 문자를 요청하여 비트를 수정 한 다음 비트 마스킹 작업을 사용할 수 있습니다. – Yuri

답변

3

C에서 주소 지정 가능한 메모리의 최소 단위는 char입니다. 대부분의 CPU 아키텍처에서 어드레스 가능한 메모리의 가장 작은 단위. * 비트의 주소에 대해 이야기하는 것은 의미가 없습니다.


* 개별 비트의 주소 지정을 허용하는 가설 머신을 상상할 수 있지만 꽤 수수 할 수 있습니다.

6

비트에는 주소가 없습니다. 그래서 당신은 주소로 그들을 참조 할 수 없습니다. 주소 지정의 단위는 char입니다.

내가 추측 한 것은 언어가 목표로 삼은 아키텍처와 일치하는 디자인이었고 개별 비트의 주소 지정을 허용하는 컴퓨터가 없다는 것입니다.

1

c 최소 주소 지정 가능 메모리 단위는 Byte로 간주됩니다. 포인터는 임의의 data_type이 될 수있는 메모리 위치를 가리 킵니다 (포인터 또한 다른 변수 임). 바이트 단위로 후퇴하는 비트에는 주소가 없으며 비트 위치가 있습니다.

기본적으로 특정 비트를 가리킬 수 없으므로 바이트 또는 전체 단어를 가리킬 수 있습니다.