바이너리(binary)
이제 진수도 알았으니 바이너리에 대해서 깊게 이야기를 해보겠습니다~
바이너리는 2진수 입니다. 그렇다면 정수로 2진수를 표현 했다면
음수로는 어떻게 표현할가요???
기준은 1 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언어입문, #프로그램입문, #바이너리연산
'Programing - C > C Basic grammar ' 카테고리의 다른 글
030 캐스트 연산 (0) | 2017.07.27 |
---|---|
029 비트 연산자 이해하기( |, &, ~, ^, <<, >> ) - 3 (0) | 2017.07.27 |
029 비트 연산자 이해하기( |, &, ~, ^, <<, >> ) - 1 (0) | 2017.07.27 |
028 쉼표 연산자 ( , ) (0) | 2017.07.27 |
027 조건 연산자( (if)?(true):(false ) (0) | 2017.07.27 |