|
형 변환을 거쳐서 0 이랑 비교해보면 됩니다.
DWORD i = 0xFFFFFFF1;
if( (signed)i < 0 )
{ 음수처리}
else
{ 양수 또는 0 처리 }
형 변환을 하더라도 데이터 인식의 차이일 뿐이지 실제 메모리 저장값은 변하지 않기 때문에 입맛에 맞게 처리하면 됩니다.
너브 님이 쓰신 글 :
: 안녕하세요^^
: 이론상으로만 2의 보수를 해보았지 이렇게 직접 쓰게 될줄은 꿈에도;;;;
:
: 타입은 DWORD 구요
:
: 10 이면 그냥
: 00 00 00 0a 겠구요...
: -10 이라면
: 10의 보수를 취하면...
: FFFFFFF5
: 이렇게 되고....
: 1을 더해주어서(2의보수)
: FFFFFFF6 이렇게 되는게 맞겠죠???
:
: 문제는 위와 같이 -10의 값이 들어온다면.....
: 반대로 -1 해준다음에 not을 해주는건 알겠는데요...
: 정확하게 음수가 어디부터인지 몰라서요;; ㅜ.ㅜ
:
: DWORD no; // 32-bit unsigned integer.
: long value
: if (no > (0xFFFFFFFF >>1) { // 1. DWORD 값을 반으로 나눈 값보다 크면 음수 맞나요???
: no = ~(no -1) ; // 2. 음수의 절대값을 계산...
: value = - no; // 3. 앞에 (-) 부호를...................
: //
: }
:
: 위와 같은 방법으로 처리하면 되는 건가요??
: 대충 위와 같은 방법으로 함수를 만들었는데...
: 주석 1번에서 음수부분을 판단을 하는 방법이 맞나요????
:
: 그리고 혹시 함수가 있는지요???
|