2013-10-28 2 views
0

아무도 평범한 용어로 비트 필드가 무엇인지 말해 줄 수 있습니까? 나는 디버깅에서 PHP 과정을하고 있으며 강사는 그 용어를 많이 사용하고 있습니다. 이것은 PHP 오류보고의 맥락입니다. 여기 평범한 사람의 용어로 비트 필드 란 무엇입니까?

는 성적에서 인용 한 것입니다 :

오류보고는 일반적으로 명명 된 상수를 통해 비트 필드를 나타내는 정수 와 오류보고 레벨을 설정합니다. 기본적으로 PHP는 E_NOTICE를 제외한 모든 것을보고합니다. 부터 PHP 5.4까지의 버전은 E_STRICT도 제외합니다.

나는 그것이 내가 내 무역 : 당신의 도움에 대한

감사의 명칭을 이해 주목받는 프로그래머 중요하다고 생각합니다!

참고 :는 이미 위키 피 디아에서 시도 ...

+1

http://en.wikipedia.org/wiki/Bit_field –

답변

1

우리는 조금 무엇으로 시작해야합니다. 비트는 0 또는 1의 두 값을 취합니다. 관습에 따라 영 (zero)는 거짓 (false)이라고도 불리는 반면 참 (true)이라고도 불립니다.

비트 필드는 수 비트이다. 문자와 단어 -

나는 비트의 두 가지 일반적인 조직에 discribing에 의해 여기 빗나가 것입니다.8 비트와 단어가 32 비트 어디 때 옛날에

는 PC의 문자를 나왔다. 오늘날 단어는 64 비트 단어로 이동합니다. 문자가 16 비트로 이동 중입니다.

비트 필드

내가 정수를 나누는 방법 PHP를 모르는를 나타내는 정수, 그러나 이것은 생각이다. 기본적으로 비트 수준에서 정수를 보면 몇 가지 의미가있는 패턴을 발견 할 수 있습니다.

당신이 더 이해하기 진수 2의 힘을 이해할 필요가있다.

a 32 bit integer would be 
0000 0000 0000 0000 0000 0000 0000 0000 

Putting in two bit fields... 
0000 0000 0000 0000 0000 0000 AAAA BBBB 

두 개의 필드 폭 x & B 각 4 개 비트를 찾을 수있는 비트의 정수를 찾고 있습니다.

AAAA의 값은 1100 또는 C (16 진수) BBBB의 값은 0111 또는 7 (16 진수) 일 수 있습니다.

정수의 C7 값은 16 진수이거나 199는 십진수입니다.

그래서, 비트 필드로 바라 보았다 정수 199는 다른 모습을 가질 것이다.

로버트

+0

감사합니다. 당신과 @Nishith Jain M R 답변 모두 도움이되었지만 조금 이해하기 쉽기 때문에 당신의 답변을 수락했습니다. 것은 저 개념 프로그래머가 아니므로 이러한 개념은 확실히 새로운 영역입니다. – gillytech

1
  • 비트 필드는 비트의 지정된 수의 구성 변수입니다했다.
  • 비트 필드는 구조체 또는 공용체의 멤버가 될 수 있습니다.
  • 비트 필드는 정수 유형으로 해석됩니다.

    구문 :

    struct structName 
    { 
        dataType identifierName1: numberOfBits; 
        dataType identifierName2: numberOfBits; 
        ... 
    }; 
    
  • '의 NumberOfBits'는 음이 아닌 정수 값이어야합니다.

  • 비트 필드에는 주소가 없습니다. 비트 필드의 배열에 대해서는 비트 필드에 대한 포인터와 비트 필드를 반환하는 함수를 사용할 수 없습니다.

  • 어드레스 - 운영자 (&)는

  • 이름 비트 필드하고 참조 할 수있다 존재 비트 필드에 적용 할 수 없다.

  • 런타임에 이름이없는 비트 필드의 내용은 예측할 수 없습니다. 정렬을 위해 "더미"필드로 사용할 수 있습니다.

  • 폭을 선언리스트에 따라 부재의 저장소는 INT 경계에서 시작하도록 보장 0으로 지정하는 이름 비트 필드.

    typedef struct bitField 
    { 
        unsigned x : 3; // 0 to +7 (3 bits) 
        signed  : 2; // No name - 2 Bits of padding 
        signed y : 6; // -32 t0 +31 (6 bits) 
        unsigned : 0; // Force alignment to next boundary. 
        unsigned z : 1; // 0 or 1 
    } Temp; 
    
+0

이 좋은 시작입니다, 감사합니다! 그들은 무엇을 위해 사용 되는가? 실용 사례를 보여줄 수 있습니까? 나는이 개념들을 이해하지만, 나는이 데이터로 생각하는 방법에 대해 내 마음 속의 맥락을 가지고 있지 않다. – gillytech

관련 문제