나는 이런 식으로 바이트의 일부 비트를 포장해야합니다C/C++ 비트 필드 대 비트 단위 연산자를 사용하면 더 빠르고, 더 좋고, 더 이식성이 뛰어 납니까?
struct
{
char bit0: 1;
char bit1: 1;
} a;
if(a.bit1) /* etc */
나 : 소스 코드의 명확성에서
if(a & 0x2) /* etc */
은 비트 필드가 깔끔한 것을 나에게 매우 명백하다. 그러나 어떤 옵션이 더 빠릅니까? 나는 속도 차이가 너무 많지 않을 것이라는 것을 안다. 그러나 내가 그 중 하나를 사용할 수 있다면, 더 빨리, 더 좋다면 좋다.
다른 한편으로는, 비트 필드가 플랫폼간에 동일한 순서로 비트 정렬을 보장하지 않는다는 점을 읽었습니다. 코드를 이식 가능하게 만들고 싶습니다.
참고 : '프로필'에 답할 계획이면 괜찮습니다. 그러나 나는 게으르다. 이미 누군가가 대답을하면 훨씬 좋습니다.
코드가 잘못되었을 수 있습니다. 원할 경우 수정할 수 있지만이 질문에 대한 요점을 기억하고 시도해보십시오.
http://stackoverflow.com/questions/1044654/bitfield-manipulation-in-c에 관심이있을 수 있습니다. 적어도 내가 생각하는 또 다른 매우 유사한 질문이 있습니다 (이 것은이 것 같지 않습니다). –
Bitfields : 너 야! 모두에게 감사드립니다. – Petruza
와우. 우리는 여기서 중요한 교훈을 가르쳤습니다. –