336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 바이너리(binary)



이제 진수도 알았으니 바이너리에 대해서 깊게 이야기를 해보겠습니다~


바이너리는 2진수 입니다. 그렇다면 정수로 2진수를 표현 했다면 


음수로는 어떻게 표현할가요??? 


기준은 byte로 하고 이것은 8 bit 입니다.

메모리 공간

부호 표현 공간


데이터 표현공간

 

 

 

 

 



붉은 색 : 부호 표현 공간


노란 색 : 데이터 표현 공간


부호 표현 공간은 Most Significant Bit 라고 직역하면 최상위 비트(가장 중요한 비트) 0일때 양의 수가 되고 1일때 음의수가 됩니다.


그렇다면 나머지 7개 공간으로 표현 할수 있는 수는 1 1 1 1 1 1 1 입니다. 10진법으로 계산 하면 127 입니다.



-----------------------------------------------

Tip


여기서 잠깐~ 10진수를 2진수로 바꾸는 식을 그림으로 간단히?! 설명하고요~





(프로그램은 정말 산수를 잘해야합니다...ㅠㅠ ㄷㄷ)


 




-----------------------------------------------



음수는 보수를 취해요~


부호 표현 공간만 1로 바꿔 주고 같은 양의 수와 음의 수를 덧셈을 해보면 말도 안되는 답이 나와요 ~


예를 들어 


0  0  0  1  0  0  0  0

1  0  0  1  0  0  0  0

---------------------

1  0  1  0  0  0  0  0


위내용은 


16 + (-16) 입니다..


그렇다면 답은 당연히 0이 나와야하는데


1  0  1  0  0  0  0  0 이 나옵니다.. 부호 비트 빼고 한다면~ 32란 결과가 나옵니다..;;; 이상하죠?!


그래서 해당 수에 앞에서부터 1의 보수가되게 만들어줘요~  그리고 마지막에 1을더해서 올림수가 발생하도록합니다


넘어가는 수는 당연히 버려지게됩니다. ;;; 제가 설명하고도 난해 한부분이 많내요 ㅎㅎㅎ;;;;하지만 이렇게 사용한답니다 ㅠㅠ 


그러면 정확한 음의수가됩니다~


0  0  0  1  0  0  0  0

---------------------

1  1  1  1  0  0  0  0



마지막으로 숫자 1에대허서 -1을 만들어보겠습니다.


0  0  0  0  0  0  0  1

---------------------

1  1  1  1  1  1  1  1


;; 쉽죠?;;; (안 쉽다...제길...)


실수부분도 변환하는 법이 있지만 현재에서 설명한다면 프로그램 입문하시는 분이 보고 도망갈 것 같아서 설명은 여기까지 ~~~


부동소수 설명할 기회가 있다면 실수 바이너리에 대해서 조금 깊게 이야기 할게요~


#C언어, #C언어입문, #프로그램입문, #바이너리연산

+ Recent posts