Czy ktoś mi może wytłumaczyć na czym to polega ? Próbuję się skapnąć, ale nic nie wychodzi. np.
+13: 0,1101 -13: 1,1101
-7: 1,00111 +7 : 0,0111
Ech, mam to samo - zwykły binarny jest prościutki przy wszystkich działaniach, ale znak-moduł, uzupełnienia do dwójki itd. nie czaje kompletnie ;O Może jakbym na wykład poszedł...
To chyba żart, ale gdyby jednak nie ...
znak moduł to po chłopsku:
część liczby opisuje znak - ta część to pierwszy
(najstarszy, najbardziej znaczący, pierwszy z lewej, MSB ...)
część liczby opisuje moduł (czyli to, co w szkole nazywają "wartością bezwzględną"
+13: 0,1101
w tym przypadku znak + = 0
moduł 1101=13=8+4+0+1
-13: 1,1101
znak - = 1
moduł 1101=13=8+4+0+1
-7: 1,00111
znak -=1
moduł 00111=7=0+0+4+2+1
+7 : 0,0111
znak +=0
moduł 0111=7=0+4+2+1
chyba sie nie pomyliłem - piszę na kolanie ...
^^Tak? A dodawanie/odejmowanie liczb o różnych znakach gdzie za przeproszeniem z dupy znak zmienia się jak mu się podoba... (chyba, że jesteś to w stanie prosto wytłumaczyć, nie tak jak koleś, który uważa, że szystko to powinniśmy już znać i zapieprza z materiałem...)
@up
Nie pomyliłeś się - autorowi tematu chodzi jednak o dodawanie tych liczb. Sam zastanawiałem się nad odpisaniem ale w internecie jest całkiem sporo na ten temat. Jeżeli nie chce mu się poszukać w googlach, to mi tym bardziej nie chce się mu tłumaczyć.
Szukałem w googlach, tylko nie umiem tego pojąć, myślałem nad wytłumaczeniem jakimś na chopski rozum :P
Ludzie dzielą się tylko na 10 rodzajów - tych, którym chce się sięgnąć do książki na temat systemu dwójkowego i tych którym nie chce się sięgnąć do książki na temat systemu dwójkowego - przykro mi - na forum to się tego nie nuczysz ... ale gdyby jednak - na codzień posługujesz się systemem znak-moduł - tylko w systemie dziesiątkowym.
weźmy liczbę dwadzieścia trzy
zapisujesz ją jako 23 (bo każdy wie, że to plus 23 i + nikt nie pisze)
+ znak, 23 moduł
minus dwadzieścia trzy
-23 (- znak, 23 moduł)
jeśli potrafisz policzyć np. +23+(-13) to potrafisz dodawać liczby znak-moduł w systemie dziesiątkowym,
w dwójkowym jest tak samo ale 1+1=0 i jeden "w pamięci") a nie 2
(odpowiedniki w systemie dziesiątkowym to to np. 5+5=0 i "jeden w pamięci"
6+4=0 i "jeden w pamięci" ...)
A skąd się bierze te 1,0 przy 7 jak 7 to 0111 i tak samo w 13, 13- 1101 a tam jest 0,1101
Nie wiem jestem z tego ciemny, chodziłem do technikum chemicznego, jestem na studiach na transporcie i koleś uważa, że to wszystko mieliśmy i na pewno znamy. To nie jest mój jedyny problem bo po raz pierwszy na oczy widze jakieś przerzutniki, multipleksery itd. na wykładzie koleś pieprzy o procesorach które produkowali 20 lat temu i jak się na czata wchodzi więc...
A system znak-moduł to dopiero prościutki początek zabawy :) Przy działaniach na liczbach zmiennoprzecinkowych - to jest dopiero fajne!
A skąd się bierze te 1,0 przy 7 jak 7 to 0111 i tak samo w 13, 13- 1101 a tam jest 0,1101
Pierwszy bit to kod znaku - 1 oznacza minus, 0 oznacza plus. I tyle.
Czyli -13 to bedzie 1,01101 czy 1,1101 bo w prezentacji co nam koleś dał są 2 wersje
Oba są równe -13 tylko z tą różnicą, że pierwszy zapis wykorzystuje łącznie 6 bitów a drugi 5.
Czyli -13 to bedzie 1,01101 czy 1,1101 bo w prezentacji co nam koleś dał są 2 wersje
W tym zapisie jeśli MSB (pierwszy z lewej bit) jest równy 1 to liczba jest ujemna, 1 oznacza "-", jeśli pierwszy bit jest 0 to 0 oznacza "+", tan najstarszy bit nazywany jest bitem znaku, bo służy do tego na co wskazuje nazwa - do wskazania czy liczba jest dodatnia, czy ujemna.
1,01101 ...1,1101 - nie spotkałem się z takim zapisem, ale zgaduję, że przecinek oznacza oddzielenie bitu znaku (czyli to co po lewej stronie przecinka określa +(0) lub -(1))
W rzeczywistości gdy przejdziemy od matematyki/informatyki do konkretnego układu/informatyki stosowanej MUSIMY uwzględnić długość słowa.
Przykład dla liczby +13 i -13:
dla układu ośmiobitowego zapis binarny w ZM (znak-moduł)
+13 powinien być 00001101
a dla
-13 powinien być 10001101
dła układu 16-bitowego ZM
+13 .. 0000000000001101
a dla
-13 .. 1000000000001101
przecinek służy do tego aby nie dostać oczopląsu i móc pominąć zera wiodące (czyli te między bitem znaku i pierwszą jedynką w module) tzn, że jeśli dobrze odgadłem po co jest przecinek, to oba zapisay sa poprawne, choć TROCHĘ niekonsekwentne (zwykle albo pomijamy zera wiodące, albo nie) - ale błędem toto nie jest - najwyżej trochę mylące.
To można sobie wyobrazić też na (głupawym) przykładzie licznika kilometrów w samochodzie (takim starego typu z bębnami z cyferkami) załóżmy, że pytasz kolegi ile samochód przejechał ,, odp. 13, co widzisz na liczniku 0013 (bo są 4 bębenki) prawda, ale nikt chyba nie odpowie "zerozerotrzynaście" - w rzeczywistym układzie rejestry/komórki mają też określoną szerokosć (8bitów/16bitów itd) więc komputer musi pamiętać wszystkie zera - te pomijane zwyczajowo przez człowieka też.
Podsumowując skrótem myślowym - jeśli jest ten przecinek i pełni rolę, którą założyłem - można ale nie trzeba pomijać zer między bitem znaku i pierwszą jedynką. Jeśli w zapisie nie ma przecinka i mówimy o konkretnej liczbie bitów, to pierwszy bit jest bitem znaku, nie wolno pominąć żadnego bitu choćby trzeba było wypisywać 62 zera.
Na koniec - Twój wykładowca/nauczyciel ma zawsze rację i jeśłi mówi inaczej niż ja - słuchaj jego.