양수 10진수를 2진수로 변환하는 방법은 알고 있었고 또 조사를 통해 익혔는데
-125: 1000 0011
이렇게 음수 10진수를 2진수로 바꾸는 것은 조사를 해보아도 조금 복잡한 것 같은데 변환하는 방법이 따로 있을까요??
음수 10진수를 2의 보수를 이용하여 2진수로 변환할 수 있습니다. 2의 보수란, 어떤 수를 2진수로 표현할 때 각 자리수를 반전시킨 다음 1을 더한 것을 말합니다. 이렇게 변환하면, 양수와 음수 모두를 2의 보수로 표현할 수 있습니다.
음수 10진수를 2진수로 변환하는 방법은 다음과 같습니다.
먼저, 해당 숫자의 절댓값을 2진수로 변환합니다. 예를 들어, -125의 절댓값인 125를 2진수로 변환하면 0111 1101입니다.
1에서 구한 2진수를 왼쪽부터 탐색하면서, 첫 번째 1을 찾습니다. 예를 들어, 0111 1101에서 첫 번째 1은 가장 왼쪽 자리의 0 다음에 있는 1입니다.
첫 번째 1의 위치 이전에 있는 모든 비트를 반전시킵니다. 예를 들어, 0111 1101에서 첫 번째 1의 위치 이전에 있는 모든 비트를 반전시키면 1000 0011이 됩니다.
따라서, -125를 2진수로 변환하면 1000 0011이 됩니다.
이 방법은 2의 보수를 이용하여 음수를 2진수로 변환하는 일반적인 방법입니다.
음수의 2진수 표현은 2의 보수법을 사용하고 조금 복잡합니다.
온라인 서점에서 '컴퓨터 구조'로 검색하면 전공 서적이 있고, 컴퓨터 구조에서 배우게 됩니다. 그러나 일반적인 코딩 환경에서는 그닥 필요하지 않는 지식입니다.
보통 중간고사에서 음수, 실수의 부동소수점 표현을 구하는 문제가 출제됩니다. 컴공이면 전공 시간에 어차피 배우고, 컴공이 아니면 몰라도 되고, 조금 알고 싶다면 전공 교재를 사서 한 번 쭉 훑어보는 게 방법입니다.
윈도 계산기에서 프로그래머 계산기를 선택하면 언제든 음수, 실수의 이진수 표현을 볼 수 있습니다. 직접 계산기 기능을 구현하거나 컴공 중간고사 시험을 볼 게 아니라면 이 정도만 알면 충분합니다.
어차피 컴공 졸업생도 1.23과 -1.23을 2진수로 표현해달라고 하면 못합니다. 시험 끝나면 날리는 지식이니까요. 검색하고 교과서 보면 다시 이해하고 설명하는 건 가능하겠지만...