저는 union보다는 unsigned 타입에 대해 비트연산 쓰는걸 추천합니다.
union의 동작은 까다로운 면이 많습니다.
위 링크에서도 이식성 문제를 경고하고 있죠.
That may work but I think there's no guarantee that bit1 will be the lsb. The compiler can start assigning bits from msb to lsb. So I don't think it's portable. – agbinfo Nov 15 '13 at 16:27
any time you start using bitfields you have left the world of portability, but based on what the OP asked this is what they are looking for, – tletnes Nov 15 '13 at 17:52
CPU는 사실상 1bit나 1byte 단위로 메모리에 접근을 못하기 때문에
속도도 비트연산 쪽이 빠르거나 비슷합니다.
함수 이름은 취향에 맞게 적당히 고치세요.
만약 매크로 함수로 고칠 거라면 (unsigned char)라는 형변환 연산자를 적당히 붙여줘야 합니다.
유니온을 사용하시면 될 것 같네요
비슷한 예제가 여기 나와있습니다. 다만 니블을 사용한 것은 32비트용이고, 1바이트 예제에는 정작 니블이 없으니 절충해서 만드시면 될 듯.
http://stackoverflow.com/questions/20005349/define-union-that-can-access-bits-nibbles-bytes
--
감사합니다.
즐거운 하루되세요.
저는 union보다는 unsigned 타입에 대해
저는 union보다는 unsigned 타입에 대해 비트연산 쓰는걸 추천합니다.
union의 동작은 까다로운 면이 많습니다.
위 링크에서도 이식성 문제를 경고하고 있죠.
That may work but I think there's no guarantee that bit1 will be the lsb. The compiler can start assigning bits from msb to lsb. So I don't think it's portable. – agbinfo Nov 15 '13 at 16:27
any time you start using bitfields you have left the world of portability, but based on what the OP asked this is what they are looking for, – tletnes Nov 15 '13 at 17:52
CPU는 사실상 1bit나 1byte 단위로 메모리에 접근을 못하기 때문에
속도도 비트연산 쪽이 빠르거나 비슷합니다.
함수 이름은 취향에 맞게 적당히 고치세요.
만약 매크로 함수로 고칠 거라면 (unsigned char)라는 형변환 연산자를 적당히 붙여줘야 합니다.
정말 감사합니다.
즐거운 하루되세요.
댓글 달기