본문 바로가기
WORK/Sotfware

[SW] 음수 십진수를 16진수로 변환 및 16진수를 음수 표현

by KANG Stroy 2024. 1. 24.
728x90
728x90

-77 의 십진수를 16진수로 표현 하기 위해서는 2진수로 변환이 필요 합니다. 

 

-77 에서 -(음수)를 빼고 바이너리 (2진수)로 표현 하면

윈도우 계산기에서 <프로그래머>를 이용 할 겁니다. 

77
HEX 의 값 77 
BIN (2진수) 0111 0111 

2진수를 NOT 을 사용 합니다. 

 

정수가 음수가 되면서 

앞자리가 FFFF로 변화가 됩니다. 

여기서 봐야 할 부분은 BIN(2진수) 입니다. 

1000 1000    
HEX는 0x88 입니다. 
여기에 
[   +1   ] 을 합니다. 
1000 1001 이 되겠지요? 

0x89
가 됩니다. 이 부분이 16진수로 변환 된 것입니다. 

 

반대로 16진수의 음수의 십진수로 변경 할 수 있습니다. 

여기서 NOT을 클릭합니다. 

NOT이 적용 되면 

76이 되고 여기에 + 1을 하면 77이 됩니다. 

 

16진수에서 십진수로 변환 한 것입니다.  

DEC 은 -137이 됩니다. 


프로그램에서 종종 컴파일러가 음수표현이 어려울때가 있습니다. printf가 되지 않거나 지원을 하지 않는 경우가 있습니다. 이때에는 XOR를 이용해서 적용을 하면 되겠습니다. 

단, 음수 자리를 확인하고 적용을 해야 합니다. 

 

0x77  (XOR)  0xff 를 하게되면 NOT과 동일하게 동작이 됩니다. 

1  -> 0 으로 

0  -> 1 로 변경이 됩니다. 

이를 이용해서 NOT 과 동일하게 이용하게 되는 겁니다. 무조건 변경을 하게 되면 오류가 발생 될 수 있습니다. 

728x90

댓글