죄송합니다. 설정이 제대로 이해되지 않았습니다. 나는 "주변"에 약간 대답 할 것이다.
9 8 7 6 5 1 0
sign rawvalue rawvalue rawvalue rawvalue ... rawvalue rawvalue
후 1 + 8 비트 당신이 가질 수있는 값은 다음과 같습니다 : 당신의 "비트 레이아웃이"일반의 경우
가장자리의 경우 이후
-255 -254 ... -2 -1 -0 +0 +1 +2 ... +254 +255
있습니다
111111111 ... 100000000 000000000 ... 011111111
(-255) (-0) (+0) (+255)
그런 평범한 인코딩에는 같은 것이없고은 +256입니다. +0입니다. 물론 약간의 스마트 코드로 작업 할 수는 있지만, 기본 아이디어에서 "기호"비트에 가장 가까운 1이 느껴지고 실제 값이 0이므로 실제로 +0입니다.
수학적으로 -0 == +0 그러나 그들은 다른 징후가 있습니다. 그것은 하나의 가치 낭비이고 또한 수학적 연산을 복잡하게 만듭니다. 이것은 당신이 2의 보수 시스템에서
-256 ... -2 -1 0 +1 +2 ... +255
100000000 ... 111111110 111111111 000000000 000000001 000000010 ... 011111111
의 범위의 값을 사용할 수 있도록 것이라고 소개 할 두 보완 시스템에 대한 다른 이유의 사이에 하나, 첫 번째 비트는 또한 "부호 비트라고합니다 "하지만 음수는"기호 = 1 "다음에"rawvalue "가 아닌 현명하게 인코딩됩니다. 여기서 음의 값은 "반전 됨"입니다.
0 - 1 ==> 0 ===> 000000000 - 000000001 ==> 111111111 +underflow,ignored
-1 + 1 ==> 0 ===> 111111111 + 000000001 ==> 000000000 +overflow,ignored
그래서, 당신이 선택한 인코딩에 따라, 당신이 256을하지 않습니다,하지만 당신은 사용할 수 -256 (2의 보수)가 수도 여부 : 이러한 인코딩은 예부터 아주 쉬운 수학 연산을 할 수 있습니다 (일반 기호).
(btw, 평범한 것과 twoscomplement aside : 물론 다른 인코딩을 사용하거나 원하는 방식으로 숫자를 인코딩 할 수 있습니다. 즉, -11..500 또는 그와 비슷한 값을 가지면됩니다. 아마도 거기에 명백한 "표시"비트가 없을 것입니다.)
나는 수십 년 전에 9 비트 시스템을 만드는 것을 중단했다고 생각했습니다. – Gabe
+256도 크기가 너무 크면 8 비트입니다. – cHao
죄송합니다. 왼쪽에 256 열을 추가하는 것을 잊어 버렸습니다. – DigiSweep