반응형
- 마크다운변환 : 20190905
- 기타사항 : 틀린사항은 댓글로 수정바랍니다.
너무 기본적인 코딩은 무시한채 매일 검색만 해서 붙여넣다보니 아주 간단문제에서 부딛히고 말았다 ㅡㅡ;
Shift 연산
기본적으로 Shift 연산을 생각하기엔 2진수로 생각하면 쉬웠다. 하지만 코딩은 대부분 16진수로 이뤄진다는것이다! (생각하기가 너무 싫은 문제도 있지만.. 생각하려니 복잡했다.)
일단 DWORD의 크기부터 알아야 했다ㅡㅡ;
DWORD 의 크기는4바이트.. / 1바이트는 8비트…
- DWORD dwTemp = 1
- dwTemp를 16진수로 표현하면.. 0x00000001
저것을 0x00010000 으로 만들고싶었다. (갑자기 멍해졌었다;;)
Shift 연산은 2진수를 기준으로 생각을 하면 쉽다.
0b00000001 를 1만큼 좌 시프트 시키면.. 0b00000010 이 된다.
0b00000001 를 2만큼 좌 시프트 시키면.. 0b00000100 이 된다.
0b00000001 를 4만큼 좌 시프트 시키면.. 0b00010000 이 된다.
그럼 16진수로 넘어와서..
0x00000001 를 1만큼 시프트 시키면.. 0x00000002 이 된다.
0x00000001 를 3만큼 시프트 시키면.. 0x00000008 이 된다.
0x00000001 를 4만큼 시프트 시키면.. 0x00000010 이 된다.
0x00000001 를 0x00000010 로 만드려면 4 만큼 시프트
0x00000001 를 0x00000100 로 만드려면 8 만큼 시프트
0x00000001 를 0x00001000 로 만드려면 12 만큼 시프트
간단한 원리지만.. 16진수를 기준으로 자릿수 한 개를 Shift 할때는 (4*자릿수)만큼 Shift 해야한다는소리다!
0x00000001 를 0x00010000 로 만드려면..
4*4 를 Shift 해야하니.. 0x10 만큼 Shift 하면 된다!!!
0x00000001 << 0x01 == 0x00010000;
완전 기본적이지만 갑자기 생각하려니 그냥 멍해져서 정리했음;;
반응형