Question about the bit opperation
제 컴은 인텔칩입니다. 그래서 리틀엔디언 방식으로 비트를 저장하게 됩니다. 얼마전 답변을 보고 알게되었습니다. 그런데 비트연산을 하던 도중 몇 가지 의문이 들던데요.
10이라는 정수형 데이터가 비트구조로 저장될 때는, 다음과 같은 구조로 저장됩니다.
00001010 00000000 00000000 00000000
그리고 1이라는 정수와 비트연산을 한다고 하면, 1은 다음과 같은 구조로 돼있을 겁니다.
00000001 00000000 00000000 00000000
그리고 두 개를 &연산한 값을 출력합니다. 그리고 10이라는 값을 담고 있는 변수를 >>1 비트연산해서 그 변수에 값을 저장합니다. 32번 루프를 돌며 이러기를 반복하면, 저 구조를 봤을때 결과값은 다음과 같이 나와야 한다고 생각합니다.
0
2^24
0
2^24
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
그런데 결과는 이와 다르게 다음과 같이 출력됩니다.
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
물론 아래와 같은 결과를 기대한 것이지만, 리틀엔디안이라는 방식을 적용했을 때 나와야할 결과는 그 위의 것이라고 생각합니다. &연산과 shift 연산에 대해 제가 제대로 이해하지 못한 부분이 있어서 좀 헷갈리는 것 같은데, 어떤 생각이 잘못된 것인가요?
댓글 달기