2의 보수로 2 진수로 변환하는 방법을 알고 있지만 여전히 그 개념에 혼란 스럽습니다.바이너리 자연수에 대한 2의 보수가
음수를 2 진수로 변환 할 때만 2의 보수를 사용합니까?
도움이 될 것입니다. thanks
2의 보수로 2 진수로 변환하는 방법을 알고 있지만 여전히 그 개념에 혼란 스럽습니다.바이너리 자연수에 대한 2의 보수가
음수를 2 진수로 변환 할 때만 2의 보수를 사용합니까?
도움이 될 것입니다. thanks
음수에 대한 2의 보수 표기법은 실제로 잘 정의 된 고정 길이 인코딩에 달려 있습니다. 왜? 선행 0은 의미 상 의미가 있어야합니다. 가변 길이 인코딩 (일반적으로 수학과 같은)은 선행 0을 무시합니다. 0101과 101은 같은 숫자입니다. 그러나 2의 보수에서이 숫자 중 하나는 양수 (4 비트 2의 보수 표기법에서 0101 = 5)이고 다른 음수 (3 비트 2의 보수 표기법에서 101 = -3)입니다. 그래서 당신은 실제로 2의 보완을위한 컨테이너 크기를 의미있게 지정해야합니다.
이제이 문제가 해결되었습니다. 질문에 대한 답변이 명확 해집니다. 길이가 k
인 임의의 주어진 비트 열은 k
비트 2의 보수 표기법으로 나타낸 숫자입니다. 최상위 비트가 0 인 경우에만 숫자가 양수입니다. 주어진 "양수"숫자는 k
번째 비트가 필요하지 않으면 주어진 2의 보수 표기법에 대해서만 양수입니다. 여기서 k
은 표기법의 비트 수입니다. 예를 들어, 4 비트 2의 보수 표기법에서 "양수"인 숫자 8 (= 1000)은 표현할 수 없으며 어쨌든 그렇게하려고하면 숫자는 -8 (= 1000)으로 해석됩니다. 표현할 수있는 범위는 [-8, 7] = [1000, 0111]입니다.