|
union 의 경우 union 멤버의 가장큰 size 의 멤버로 size 가 fix 됩니다.
union
{
unsigned s; // 1 byte
unsigned char ch[2]; // 2byte
} rot;
그래서... 최대 2byte 이므로 16 bit 까지 shift 시키는게 가능하겠죠?
함수가 1 byte 를 shift 시키되 1byte 가 넘게되는 경우 1 로 reset 되는 코드네요.
어느 책인지 모르지만..별로 좋은 책이 아니라 판단됩니다.
딴 책으로 바꾸어서 공부하세요..
임동현 님이 쓰신 글 :
: 쉬프트 연산을 공부하다가
:
: 로테이트 함수를 구현하는데
:
: 공용체를 쓰라고 했는데요.
:
: 재가 생각한대로 짜 보앗는데
:
: 안되서 답을 보니..
:
: 저렇게 짜여져 있더군요.
:
: 실행해 보면 잘되는데요..
:
: rot.ch[0]에 값을 너어서
:
: 왼쪽 쉬프트한값이
:
: 어떻게 rot.ch[1]에 넘어가지는지..
:
: 그게 이해가 안갑니다. ㅠ_ㅠ..
|