Liczba binarna ze znakiem


(Ace4 Ur) #1

Witam mam problem ze zrozumieniem liczb binarnych ze znakiem + i -.

W necie znalazłem troche info jednak nigdzie nie mogę trafić na sposób sprawdzenia tego czego potrzebuję.

Na wikipedi jest:

Sposób 1:

0 101 to 5

1 101 to –5

Gdzie 0 oznaczna liczbę dodatnią a 1 liczbe ujemną tak więc zamieniamy tylko najstarszy bit.

Czy mógłby ktoś to rozpisać? Za diabła nie wychodzi mi:

0 101 = 1*2(0) + 0*2(1) + 1*2(2) + 0*2(3) = 1 + 0 + 4 + 0 = 5 Wszystko pasuje jednak na ujemnej już nie:

1 101 = 1*2(0) + 0 *2(1) + 1*2(2) + 1*2(3) = 1 + 0 + 4 + 8 = 13

Jest też sposób ze zmianą bitów 0 na 1 a 1 na 0:

5 = 0101

-5 = 1010 -- Tutaj mi wychodzi 10 a gdy najstarszy bit odejme czyli -8 to dostaje wynik -6

Może ktoś mi pomóc?


(Fiołek) #2

Sposób 1: najstarszego bitu nie bierzesz po uwagę, on tylko tylko określa, czy liczba jest dodatnia czy ujemna.


(Ace4 Ur) #3

No ja rozumiem ale jak to przeliczyć na system 10?

Typek od tego na lekcjach się sra gdzie ten BIT ujemy się podział. Gościu jest tak powalony nic nie uczy a wymaga. Za rok zmieniam szkołe lecz do tego czasu muszę to zaliczyć .

Tak więc prosze powiedz jak tą ujemną przeliczyć na system 10?


(Starkowski Dawid) #4

Liczby binarne można zapisywać w różnych systemach

W systemie Znak-Moduł najstarszy bit (z) koduje znak, a pozostałe (m)... no cóż - moduł :slight_smile:

Całą liczbę odczytuje się jako (-1)^z * m.

(-1)^1 = -1

(-1)^0 = 1

Stąd dla z=1 liczba jest ujemna, a dla z=0 dodatnia.

1101 = (-1)^1 + 1*2^2 + 0*2^1 + 1*2^2 = -1*(4 + 1) = -5


(Ave6664ever) #5

To masz tak jakby:

0 * 101 -> 1 * 5 = 5

1 * 101 -> -1 * 5 = -5

Jeżeli chodziło Ci o zapis U2, to po zmianie bitów musisz do liczby dodać jeszcze 1. Wtedy wyjdzie dobrze.

-5 = 1010 + 0001 = 1011 = -8 + 0 + 2 + 1 = -5


(Ace4 Ur) #6

Chodzi mi doładnie o coś takiego:

liczba 10:

13 na 5 bitach rozkłdam na bin

13 /2 r1

6 /2 r0

3 / 2 r1

1/2 r 1

[0]1101 = 13

Mam z tego zrobić -13 na 5 bitach

[1]1101 = -13 ? Mam to sprawdzic więc:

od prawej - 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 = 1 + 0 + 4 + 8 = 13 Ale co robie z tym [1]? by było to na -13?

Czy licze od prawej:

-1^1 + 1*2^3 ..... 1*2^0 = -13?

Tego najstarszego bitu [1] [0] oznaczajacego znak liczby nie INDEKSUJE?

Typek jakoś tłumaczy że się ten bit też indeksuje ale potem to miesza i nikt nic nie wie ...


(Simplex111) #7

Zapewniam Cię, że w internecie jest mnóstwo miejsc, gdzie można znaleźć informacje na temat zapisu liczb binarnych ze znakiem. Drugi link, jaki zwraca Google: Liczby binarne ze znakiem. Wystarczy tylko poświęcić trochę czasu i przeczytać. Nie sądzę, aby ktoś tutaj na forum podał Ci tyle informacji ile jest zawarte na tej stronie.


(Marcin E Pc) #8

Pierwszy bit (bit znaku) określa czy jest to liczba ujemna czy dodatnia. Oprócz tego masz też kodowanie Up i U(p-1) czyli dla dwójkowego U1 i U2.