게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
비트연산자.... 정말 간단한 소스 질문좀..
게시물ID : computer_112167짧은주소 복사하기
작성자 :
추천 : 0
조회수 : 553회
댓글수 : 5개
등록시간 : 2013/09/13 00:56:04
비트연산자 쉬워보이더니... 알수록 이해가 안되네요;
-----------------------------------
#include <stdio.h>

int main (void)
{
      int x=-1;

      printf("%d\n", x<<31);
}
------------------------------------

보시다시피 아주 간단한 소스입니다.
결과값은 당연히 음의 최대값 1000 0000 ~~ 0000 이 나옵니다.

그런데 할당된 4바이트가 넘어가버리고 x<<32가되면서 다시 -1이 할당됩니다. 이후로는 -2, -4 , -8 ...
즉...31~32구간 넘어갈때 1000 ~~ 0000 에서 갑자기 1111 ~~ 1111 (예상 : 0000 ~~ 0000)이 되버린겁니다. 그뒤로는 비트연산대로 -2, -4 , ... 반복하다 x<<64에서 다시-1... 그리고 다시반복;

왜그런걸까요 ?
제 생각으로는 할당된 주소와 주변 주소값으로부터 임의로 값을 빌려와 loop시켜서 그런거 같은데... 추측일뿐 정확히는 모르겠네요;
책에는 그저 계산방법만 나와있을뿐..

왜 1000 ~~ 0000 에거 갑자기 1111 ~~ 1111 이 나오는걸까요 ?


아래는 비트 연산이 어떻게 돌아가나 간단히 돌려보았습니다.
qwe.jpg

왜왜오애ㅗ애왜왜왜오애그런걸까요 ㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호