2014-01-15 1 views
0

그래서 부호와 크기를 사용하여 9 비트 메모리 위치에서 숫자 -256을 나타내려고합니다.9 비트 메모리 위치 - 부호와 크기

나는 그것을 표현할 권리가 없다고 생각합니까? 예를 들어

, 나는 부정적인 내가 아래에있는 무슨에 맞게 수있는 방법을 볼 수 없습니다 256을 사용 :

+256 = 256 128 64 32 16 8 4 2 1 
     1 0 0 0 0 0 0 0 0 

을 나는 -256는 9 비트에 너무 큰 것이라고 생각 해요 체계?

많은 감사합니다.

+2

나는 수십 년 전에 9 비트 시스템을 만드는 것을 중단했다고 생각했습니다. – Gabe

+0

+256도 크기가 너무 크면 8 비트입니다. – cHao

+0

죄송합니다. 왼쪽에 256 열을 추가하는 것을 잊어 버렸습니다. – DigiSweep

답변

0

죄송합니다. 설정이 제대로 이해되지 않았습니다. 나는 "주변"에 약간 대답 할 것이다.

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 또는 그와 비슷한 값을 가지면됩니다. 아마도 거기에 명백한 "표시"비트가 없을 것입니다.)

0

-256은이 방법으로 표현할 수 없습니다. 크기 256 이상을 나타내려면 9 비트가 필요합니다. 이로 인해 부호 비트가 남지 않습니다.

이 방법을 사용하여 부호 비트와 함께 0에서 255까지의 크기를 나타낼 수 있습니다.

-256에서 255까지를 나타내려면 2's complement을 사용하십시오.