Typ unsigned, zapis -128 w systemie dwójkowym


(pain3hp) #1

biorąc pod lupę tinyint bez parametru unsigned ma się rozumieć "nieoznakowany" 1-bajtowy (z mysql), mamy zasięg od -128 do 127, pytanie brzmi jak wygląda zapis w systemie dwójkowym liczby -128 ?

10000000

przecież to jest 8 bitów a gdzie mamy znak, bo jeżeli dobrze rozumuję to przy typie ze znakiem mamy jeden bit właśnie na ten znak +/- zatem dlatego możemy osiągnąć w przypadku liczb dodatnich wartość 127 która binarnie wyglada, czyli mamy jeden bit z przodu na znak.

01111111

Gdzie jest błąd w moim rozumowaniu ?, wiem że przedział jest dobry, bo od -128 do 127 mamy 256wartości czyli jeden bajt, ale jak wyglada zapisywanie liczb ujemnych, co sie dzieje ze znakiem


(nnick) #2

Tu masz dobre wytłumaczenie: http://www.rwc.uc.edu/koehler/comath/13.html


(slepcu) #3

a unsigned nie jest od 0 do 255 ? czyżbyś przekroczył zakres ?


(pain3hp) #4

rozumiem. czyli pierwszy bit jest znakiem, zatem 10000000 jest -128 nie wiedziałem że ten bit może być jednocześnie znakiem i być branym pod uwage w wartości liczby, dzieki