Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięKonwersja dziesięcio-dwójkowa
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
Mam problem w szkole na układach cyfrowych przeprowadzaliśmy konwersję dziesięcio dwójkową liczby 534(ułamka nie podaję bo jest zbędny) i teraz wyszedł taki wynik w sys binarnym 1000010110 i teraz chodzi o to że jak na kalkulatorze przeliczę tą binarną liczbę na dziesiętną to wynik wyskakuje -490 pytanie brzmi dlaczego tak się dzieje?? aha liczby 534 nie mogę przeliczyć na kalkulatorze na sys binarny może mi to też ktoś wyjaśnić dlaczego?? wynikiem jest 0
pozdrawiam
[ Dodano: 15-09-2006, 07:06 ]
P.S. nie wiem czy to odpowiedni dział ale nie wiedziałem gdzie to wkleic
pozdrawiam
pozdrawiam
[ Dodano: 15-09-2006, 07:06 ]
P.S. nie wiem czy to odpowiedni dział ale nie wiedziałem gdzie to wkleic
pozdrawiam
to raczej wynika ze zbyt małego zakresu obliczeniowego Twojego kalkulatora....
sprawdź te obliczenia w Windowsowym 'calc.exe', tylko przestaw go w tryb 'naukowy'...
534 (dec) przeliczył ładnie na 1000010110 (bin)
-490 (dec) na 1...strasznie_dużo_jedynek...11000010110 (bin)
zauważ, że pierwszy wynik zajmuje dziesięć pozycji wyświetlacza...
drugi, z racji liczby ujemnej (wszystkie starsze bity na 1) jeszcze więcej, co najmniej 11 pozycji..
dla liczydełek z małą ilością pól odczytowych najstarsza jedynka (jedynki) w trybie binarnym
będzie traktowana jako informacja o znaku...stąd ujemny wynik
sprawdź te obliczenia w Windowsowym 'calc.exe', tylko przestaw go w tryb 'naukowy'...
534 (dec) przeliczył ładnie na 1000010110 (bin)
-490 (dec) na 1...strasznie_dużo_jedynek...11000010110 (bin)
zauważ, że pierwszy wynik zajmuje dziesięć pozycji wyświetlacza...
drugi, z racji liczby ujemnej (wszystkie starsze bity na 1) jeszcze więcej, co najmniej 11 pozycji..
dla liczydełek z małą ilością pól odczytowych najstarsza jedynka (jedynki) w trybie binarnym
będzie traktowana jako informacja o znaku...stąd ujemny wynik
To co uzyskałeś wynika bezposrednio z faktu że zamiana liczb w zapisie dziasiętnym została dokonana na zapis binarny ale w kodowaniu uzupełnienia do dwóch ( U2) W tym kodowaniu mozliwe jest zapisywanie i wykonywanie obliczeń na liczbach całkowitych. W dla tej zamiany zapisowi dziesietnemu liczb:
odpowiada nastepujący zapis binarny (odpowiednio):
w miejsce kropek nalezy wstawić tyle cyfr ( zero lub jeden) ile wymaga przyjety zakres reprezentacji. W przypadku ogólnym musiała by to być nieskończona ilość powtórzeń. W realnym świecie jest to ilosć wyznaczona przez arbitralnie wybrany w danym urządzeniu zakres ( np. 8, 16, 32, 64, 2048 bitów). W wielu programach i kalkulatorach bywa przyjete że najstarszy bit zapisu (ten z lewej strony) jest automatycznie powielany na wszystkie dalsze miejsca zapisu ąż do końca zakresu (takie ułatwienie edycyjne).
W tym kodowaniu najwieksza możliwa liczba to
a najmniejsza ma postać:
jak można zobaczyć, w kodowniu (U2) liczba z jedynka na najstarszym bicie zapisu napewno sugeruje że liczba w zapisie dziesietnym będzie ujemna.
Oczywiście istnieją inne sposoby kodowania. naprzykład wtedy gdy operujemy nie liczbami całkowitymi ale liczbami naturalnych ( zero i dodatnie) wtedy 0 = 00...00, a max = 11...111.
paradoksy na kalkulatorach wynikają z faktu stosowania U2, wystepowania przepełnień rejestrów obliczeniowych oraz nie uwzględniania automatycznego uzupełniania zapisu.
bis
ps. Tasza, ta żyletka w sygnaturce to jakoś tak brutalnie, wcześniejsze były jakieś takie bardziej... ciepłe.
Kod: Zaznacz cały
2, 1, 0, -1, -2 -3
Kod: Zaznacz cały
000..010, 000..001, 00..00, 111...111, 111..110, 111..101
W tym kodowaniu najwieksza możliwa liczba to
Kod: Zaznacz cały
0111..111
Kod: Zaznacz cały
1000...000
Oczywiście istnieją inne sposoby kodowania. naprzykład wtedy gdy operujemy nie liczbami całkowitymi ale liczbami naturalnych ( zero i dodatnie) wtedy 0 = 00...00, a max = 11...111.
paradoksy na kalkulatorach wynikają z faktu stosowania U2, wystepowania przepełnień rejestrów obliczeniowych oraz nie uwzględniania automatycznego uzupełniania zapisu.
bis
ps. Tasza, ta żyletka w sygnaturce to jakoś tak brutalnie, wcześniejsze były jakieś takie bardziej... ciepłe.
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
ok z tym że mój problem jest taki, że liczbę 534 przeliczaliśmy pisemnie a nie na kalkulatorze i wyszedł taki właśnie wynik:
te zera i jedynki to wynik pisząc go od najstarszego bitu(od dołu) 1000010110
tym sposobem otrzymaliśmy binarną postać liczby 534 a wpisując ta binarna liczbę w kalk utrzymuję -490 i chodzi mi o to żeby ktoś powiedział dlaczego tak jest??
Bis sorry ale Twojej wypowiedzi nie rozumiem musiałbyś mi to jakoś bardzej obrazowo przedstawić bo to dla mnie trochę skomplikowane
pozdro 4 all
Kod: Zaznacz cały
534/2=267+r=0
267/2=133+r=1
133/2=66+r= 1
66/2=33+r= 0
33/2=16+r= 1
16/2=8+r= 0
8/2=4+r= 0
4/2=2+r= 0
2/2=1+r= 0
1/2=0+r= 1
tym sposobem otrzymaliśmy binarną postać liczby 534 a wpisując ta binarna liczbę w kalk utrzymuję -490 i chodzi mi o to żeby ktoś powiedział dlaczego tak jest??
Bis sorry ale Twojej wypowiedzi nie rozumiem musiałbyś mi to jakoś bardzej obrazowo przedstawić bo to dla mnie trochę skomplikowane
pozdro 4 all
obliczenia 10-bitowe
to jest wyliczone przez Ciebie na kartce 534 - i to jest OK
1000010110 binarnie to 534
ale
1000010110 w kodzie U2 to -490
teraz tak: ponieważ najstarszy bit ma wagę 512, jej dwukrotność to 1024,
od tego odejmujemy wartości (512 + 16 + 4 + 2) i otrzymujemy 490, wynikowi dajemy znak ujemny
ponieważ są ustawione najstarsze bit(y)
kalkulator sobie liczy w U2
http://pl.wikipedia.org/wiki/Kod_uzupe% ... dw%C3%B3ch
pewnie to też będzie na zajęciach...musi być.
tasza
PS.
ile pól odczytowych (cyfr) ma ten kalkulator?
PS2
bit 2 ma wagę 4, podwojona to 8, odejmujemy 8 - 4 - 1 = 3, zmieniamy znak mamy -3
a 2 (plus dwa)? że niby jest 010...
bit 2 ma wagę 4, ale jest wyzerowany, więc daje 0, odejmujemy 0 - 2 = -2, zmieniamy znak i mamy +2 - dokładnie jak w cytacie....
Kod: Zaznacz cały
bit wartość waga
b9 1 512
b8 0 256
b7 0 128
b6 0 64
b5 0 32
b4 1 16
b3 0 8
b2 1 4
b1 1 2
b0 0 1
1000010110 binarnie to 534
ale
1000010110 w kodzie U2 to -490
teraz tak: ponieważ najstarszy bit ma wagę 512, jej dwukrotność to 1024,
od tego odejmujemy wartości (512 + 16 + 4 + 2) i otrzymujemy 490, wynikowi dajemy znak ujemny
ponieważ są ustawione najstarsze bit(y)
kalkulator sobie liczy w U2
http://pl.wikipedia.org/wiki/Kod_uzupe% ... dw%C3%B3ch
pewnie to też będzie na zajęciach...musi być.
tasza
PS.
ile pól odczytowych (cyfr) ma ten kalkulator?
PS2
no więc sprawdźmy te -3 zapisane w U2 (101)W dla tej zamiany zapisowi dziesietnemu liczb:odpowiada nastepujący zapis binarny (odpowiednio):Kod: Zaznacz cały
2, 1, 0, -1, -2 -3
Kod: Zaznacz cały
000..010, 000..001, 00..00, 111...111, 111..110, 111..101
Kod: Zaznacz cały
bit wartość waga
b2 1 4
b1 0 2
b0 1 1
a 2 (plus dwa)? że niby jest 010...
Kod: Zaznacz cały
bit wartość waga
b2 0 4
b1 1 2
b0 0 1
Po prostu wpisz tę liczbę 1000010110 ale z dodatkowym zerem na początku: 01000010110 .
Twój kalkulator, kiedy wpisujesz : 1000010110 , uzupełnia ją wewnetrznie do pełnego "rejestru" na którym robi te obliczenia w taki sposób: 11111111000010110, ile jest tych jedynek na początku zalezy od konstrukcji twojego kalkulatora. Jeżeli wpiszesz: 01000010110 (dodajac zero na początku) to twój kalkulator uzupełni ją w taki sposób: 00000001000010110 i wtedy spodziewam się że uzyskasz poprawny wynik. Daj znac jak Tobie poszło.
bis
tak na początek to podaj jak twój kalkulator zamieni na dziesiętne zapis binarny a) "1" oraz b)"01".
Twój kalkulator, kiedy wpisujesz : 1000010110 , uzupełnia ją wewnetrznie do pełnego "rejestru" na którym robi te obliczenia w taki sposób: 11111111000010110, ile jest tych jedynek na początku zalezy od konstrukcji twojego kalkulatora. Jeżeli wpiszesz: 01000010110 (dodajac zero na początku) to twój kalkulator uzupełni ją w taki sposób: 00000001000010110 i wtedy spodziewam się że uzyskasz poprawny wynik. Daj znac jak Tobie poszło.
bis
tak na początek to podaj jak twój kalkulator zamieni na dziesiętne zapis binarny a) "1" oraz b)"01".
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
-
- -
- Posty:10
- Rejestracja:5 lut 2006, o 20:05
- Lokalizacja:Warszawa
Re: Konwersja dziesięcio-dwójkowa
System binarny to nie tylko liczby naturalne. W najprostszej postaci tego systemu możemy uzyskać tylko liczby naturalne a jak wiemy komputery mimo że operują tylko na liczbach binarnych dobrze sobie radzą z całkowitymi i rzeczywistymi (wyjątek stanowią niewymierne - tu sie troche gubią). Modyfikując tylko trochę najprostszy sposób zapisu binarnego możemy operować na wszystkich liczbach całkowitych. Żeby uzyskac liczby ujemne w systemie binarnym musimy przyjąć inną zasadę zapisu. Najstarsza pozycja (czyli ta od lewej) opisuje znak liczby, i tak dla zera jest to liczba dodatnia a dla jedynki ujemna. Gdyby to była jedyna zmiana w tym zapisie, arytmetyka byłaby bardziej skomplikowana więc zmieniono pozostałą część zapisu, ale tylko dla liczb ujemnych. Liczby dodatnie nadal zapisuje się w klasyczny sposób pamiętając tylko o tym aby najbardziej znaczący znak nie był 1 bo będzie to oznaczać że jest to liczba ujemna. Więc jeśli liczba jest ujemna np -1 to zapis wygląda mniej więcej tak 1.......11111111111. W najprostszym sposobie zapisu taka liczba były by równa największej możliwej liczbie na jakiej operuje dany procesor, ale w tym zmodyfikowanym systemie jest równa -1. Kalkulatory zawsze liczą w kodzie U2 tylko że za znak liczby przyjmują ostatnią możliwą do wprowadzenia pozycję, jakbys miał 11 pozycyjny wyswietlacz, kalkulator przeliczył by poprawnie ten zapis binarny.Mam problem w szkole na układach cyfrowych przeprowadzaliśmy konwersję dziesięcio dwójkową liczby 534(ułamka nie podaję bo jest zbędny) i teraz wyszedł taki wynik w sys binarnym 1000010110 i teraz chodzi o to że jak na kalkulatorze przeliczę tą binarną liczbę na dziesiętną to wynik wyskakuje -490 pytanie brzmi dlaczego tak się dzieje?? aha liczby 534 nie mogę przeliczyć na kalkulatorze na sys binarny może mi to też ktoś wyjaśnić dlaczego?? wynikiem jest 0
pozdrawiam
[ Dodano: 15-09-2006, 07:06 ]
P.S. nie wiem czy to odpowiedni dział ale nie wiedziałem gdzie to wkleic
pozdrawiam
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
dobra przeanalizuję jeszcze raz cały temat na spokojnie poczekam co jeszcze na lekcji będzie i może wtedy już to załapie dzięki wszystkim za pomoc
pozdrawiam
[ Dodano: 02-10-2006, 17:08 ]
Jakiś czas się nie odzywałem ale teraz zbliża się spr z układów cyfrowych i chodzi mi o to jak przekonwertować liczbę binarną na dziesiętną?? trzeba zrobić to sposobem "ręcznym" a nie przez kalkulator jak się do tego zabrać??
pozdrawiam i czekam na odpowiedź w miarę możliwości szybką
[ Dodano: 02-10-2006, 21:58 ]
no to wie ktoś?? bo ja wymiękam
pozdrawiam
[ Dodano: 02-10-2006, 17:08 ]
Jakiś czas się nie odzywałem ale teraz zbliża się spr z układów cyfrowych i chodzi mi o to jak przekonwertować liczbę binarną na dziesiętną?? trzeba zrobić to sposobem "ręcznym" a nie przez kalkulator jak się do tego zabrać??
pozdrawiam i czekam na odpowiedź w miarę możliwości szybką
[ Dodano: 02-10-2006, 21:58 ]
no to wie ktoś?? bo ja wymiękam
Tutaj jest prosty, ale dosyć funkcjonalny programik. Powinien byc bardzo pomocny przy nauce "jak to działa" z tymi bitami, znakami, kolejnością bajtów i bitów itd. itp.
http://www.robonz.com/news/bitometer.html
Polecam,
bis.
http://www.robonz.com/news/bitometer.html
Polecam,
bis.
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości