Ace4ur
(Ace4 Ur)
9 Styczeń 2011 19:23
#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?
Fiolek
(Fiołek)
9 Styczeń 2011 19:47
#2
Sposób 1: najstarszego bitu nie bierzesz po uwagę, on tylko tylko określa, czy liczba jest dodatnia czy ujemna.
Ace4ur
(Ace4 Ur)
9 Styczeń 2011 19:50
#3
No ja rozumiem ale jak to przeliczyć na system 10?
Typek od tego na lekcjach się ■■■ 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?
starko
(Starkowski Dawid)
9 Styczeń 2011 19:53
#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ł
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
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
Ace4ur
(Ace4 Ur)
9 Styczeń 2011 20:16
#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 …
simplex
(Simplex111)
9 Styczeń 2011 20:37
#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.
ptasior
(Marcin E Pc)
9 Styczeń 2011 23:55
#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.