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

Awatar użytkownika
piterino_16
-
-
Posty:400
Rejestracja:26 paź 2005, o 21:20
Lokalizacja:Inowrocław
Kontaktowanie:
Konwersja dziesięcio-dwójkowa

Postautor: piterino_16 » 15 wrz 2006, o 07:05

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

Awatar użytkownika
tasza
-
-
Posty:456
Rejestracja:17 sty 2005, o 10:52

Postautor: tasza » 15 wrz 2006, o 08:05

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

Awatar użytkownika
bis
-
-
Posty:134
Rejestracja:12 maja 2005, o 08:11
Lokalizacja:Warszawa

Postautor: bis » 15 wrz 2006, o 12:25

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:

Kod: Zaznacz cały

2, 1, 0, -1, -2 -3
odpowiada nastepujący zapis binarny (odpowiednio):

Kod: Zaznacz cały

000..010, 000..001, 00..00, 111...111, 111..110, 111..101
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

Kod: Zaznacz cały

0111..111
a najmniejsza ma postać:

Kod: Zaznacz cały

1000...000
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.

Awatar użytkownika
piterino_16
-
-
Posty:400
Rejestracja:26 paź 2005, o 21:20
Lokalizacja:Inowrocław
Kontaktowanie:

Postautor: piterino_16 » 15 wrz 2006, o 15:01

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:

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
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

Awatar użytkownika
tasza
-
-
Posty:456
Rejestracja:17 sty 2005, o 10:52

Postautor: tasza » 15 wrz 2006, o 15:17

obliczenia 10-bitowe

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
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
W dla tej zamiany zapisowi dziesietnemu liczb:

Kod: Zaznacz cały

2, 1, 0, -1, -2 -3
odpowiada nastepujący zapis binarny (odpowiednio):

Kod: Zaznacz cały

000..010, 000..001, 00..00, 111...111, 111..110, 111..101
no więc sprawdźmy te -3 zapisane w U2 (101)

Kod: Zaznacz cały

bit wartość waga b2 1 4 b1 0 2 b0 1 1
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...

Kod: Zaznacz cały

bit wartość waga b2 0 4 b1 1 2 b0 0 1
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....

Awatar użytkownika
bis
-
-
Posty:134
Rejestracja:12 maja 2005, o 08:11
Lokalizacja:Warszawa

Postautor: bis » 15 wrz 2006, o 16:09

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".

Awatar użytkownika
piterino_16
-
-
Posty:400
Rejestracja:26 paź 2005, o 21:20
Lokalizacja:Inowrocław
Kontaktowanie:

Postautor: piterino_16 » 15 wrz 2006, o 17:53

ten mój kalkulator to chyba jakiś radziecki jest nie mogę na początku zera wbić np 01 nie mogę wprowadzić właczam sys bin oczywiście ale nie mogę tego wpisać coś źle robie??

tasza mój kalk ma 10 pozycji odczytowych

pozdro

Awatar użytkownika
bis
-
-
Posty:134
Rejestracja:12 maja 2005, o 08:11
Lokalizacja:Warszawa

Postautor: bis » 15 wrz 2006, o 18:02

No ale co uzyskujesz dla binarnego "1" zamienionego na dziesiętny?

bis

Awatar użytkownika
piterino_16
-
-
Posty:400
Rejestracja:26 paź 2005, o 21:20
Lokalizacja:Inowrocław
Kontaktowanie:

Postautor: piterino_16 » 16 wrz 2006, o 14:01

dla 1bin otrzymuję 1dec to dobrze??

pozdr

Awatar użytkownika
ACeK
-
-
Posty:1522
Rejestracja:30 mar 2003, o 19:35
Lokalizacja:Kielce

Postautor: ACeK » 16 wrz 2006, o 14:49

Obrazek przeczytaj sobie jeszcze raz posty taszy i bisa przeanalizuj przyklady :idea: a odpowiedz na swoje ostatnie pytanie sam znajdziesz Obrazek

michalko12
-
-
Posty:10
Rejestracja:5 lut 2006, o 20:05
Lokalizacja:Warszawa

Re: Konwersja dziesięcio-dwójkowa

Postautor: michalko12 » 16 wrz 2006, o 19:44

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
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.

Awatar użytkownika
piterino_16
-
-
Posty:400
Rejestracja:26 paź 2005, o 21:20
Lokalizacja:Inowrocław
Kontaktowanie:

Postautor: piterino_16 » 17 wrz 2006, o 10:07

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 :(

Awatar użytkownika
bis
-
-
Posty:134
Rejestracja:12 maja 2005, o 08:11
Lokalizacja:Warszawa

Postautor: bis » 12 paź 2006, o 14:34

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.

Awatar użytkownika
piterino_16
-
-
Posty:400
Rejestracja:26 paź 2005, o 21:20
Lokalizacja:Inowrocław
Kontaktowanie:

Postautor: piterino_16 » 12 paź 2006, o 21:05

dzięki sprawdzin już napisałem dostałem 3 niestety :( nie starczyło mi czasu na zadania ponadpodstawowe i to dlatego tak słabo ale program napewno sie przyda

pozdrawiam

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość