Wątek przeniesiony 2015-05-21 18:57 z Nietuzinkowe tematy przez Ktos.

Zamiana przez komputer z systemu dwójkowego na dziesiętny i na odwrót

0

Witam, trochę <ort>nie typowe</ort> pytanie jak na to forum, ale nigdzie nie mogę znaleźć info. Mam pytanie odnośnie tego jak komputer zamienia liczby z systemu 10 na system 2 i na odwrót. Z góry dzięki za pomoc.

0

Rozszerzając moje pytanie, czy jeśli podajemy komputerowi 2 liczby dziesiętne do dodania to czy on zamienia je na system dwójkowy w 1 czy 2 sposób:

  1. 12(10) = 0001 0010
  2. 12(10) = 1010

somekind nie załapałeś, nie mówię o konwersji przez człowieka bo to jest jasne ale przez komputer

0

Komputer sam z siebie nic nie konwertuje i trzyma wszystko po swojemu.

0

Ok więc jeśli chcemy dodać dwie liczby to komputer zamienia je w ten sposób:
12(10) = 0001 0010?

0

Przecież 10010b to 18 a nie 12.

1

Strona z wikipedii na dziś: <a href=https://pl.wikipedia.org/wiki/Kod_BCD">Kod BCD</a>.

0

Dzięki ci Bateria :)

2
Kamil95PL napisał(a):

Dzięki ci Bateria :)

W artykule brak informacji, że kod BCD nie jest dziś tak szeroko stosowany jak kiedyś. Komputer wewnętrznie liczy w normalnym kodzie dwójkowym, nie w BCD.

0

W takim razie zamienia 10->2, 2->10? Jeśli tak to w jaki sposób?

1

po co ma zamienić 10->2 ? Wszystko liczy w 2 i przy wyświetlaniu pokazuje w systemie 10 stosując odpowiedni algorytm
Jeśli liczby pochodzą od usera to rzeczywiście konwertuje napis w systemie 10 na system 2

0

co masz na myśli pisząc odpowiedni algorytm? :)

0

Nie wiem czego oczekujesz. Dostałeś kilka odpowiedzi, link, pojęcia. W internecie jest mnóstwo informacji jak działa komputer, czemu akurat w systemie binarnym i jak reprezentuje te dane. Czekasz aż ktoś napisze, że w środku obudowy siedzi wróżka i przelicza z dwójkowego na dziesiętny?

0

Próbowałem szukać i nie znalazłem (być może za mało szukałem) więc zapytałem na forum. Co w tym złego?

1
Azarien napisał(a):
Kamil95PL napisał(a):

Dzięki ci Bateria :)

W artykule brak informacji, że kod BCD nie jest dziś tak szeroko stosowany jak kiedyś. Komputer wewnętrznie liczy w normalnym kodzie dwójkowym, nie w BCD.

No nie do końca - powiedziałbym że BCD ma się dobrze.
Pomijając fakt że BCD używa każdy system oparty na COBOL-u (których jeszcze jest parę (-dziesiąt, -set) w Polsce i na świecie) to także niektóre lub wszystkie bazy danych:

Oracle: http://docs.oracle.com/cd/B19306_01/server.102/b14220/datatype.htm#i16209
MS SQL: https://msdn.microsoft.com/en-us/library/ms187746.aspx
DB2: http://www.toadworld.com/platforms/ibmdb2/w/wiki/6837.table-data-types.aspx

0

A współczesne komputery liczą na dwójkowym czy na BCD w końcu

1
Kamil95PL napisał(a):

Próbowałem szukać i nie znalazłem (być może za mało szukałem) więc zapytałem na forum. Co w tym złego?

http://www.purplemath.com/modules/numbbase.htm
http://mathbits.com/MathBits/CompSci/Introduction/frombase10.htm
http://mathbits.com/MathBits/CompSci/Introduction/tobase10.htm

Kamil95PL napisał(a):

A współczesne komputery liczą na dwójkowym czy na BCD w końcu

Prawie zawsze liczą w dwójkowym. Wyjątkiem są

0

A jak komputery rodzą sobie z wypisaniem w systemie 10 tego co wyliczą w 2?

0

Oracle: http://docs.oracle.com/cd/B19306_01/server.102/b14220/datatype.htm#i16209
MS SQL: https://msdn.microsoft.com/en-us/library/ms187746.aspx
DB2: http://www.toadworld.com/platforms/ibmdb2/w/wiki/6837.table-data-types.aspx

Na pierwszy rzut oka widzę tylko sformułowanie fixed-point float. To nie jest coś troszkę innego niż BCD? W sensie - w zapisie bitowym jest gdzieś dorozumiany przecinek po prostu?

A do autora tematu, to powinno wyjaśnić wszelkie niejasności.

0

Czyli ty Drogi Bateria mówisz że współczesne komputery korzystają z BCD? Bo jak nie to nadal nie rozumiem jak komputer rodzi sobie z wypisaniem w systemie 10 tego co wyliczy w 2.

0
Kamil95PL napisał(a):

Czyli ty Drogi Bateria mówisz że współczesne komputery korzystają z BCD?

BCD to coś zupełnie innego, dotyczy wewnętrznej reprezentacji liczby w urządzeniu elektronicznym, ma niewiele wspólnego z współczesnymi komputerami, a jeszcze mniej z wypisywaniem na ekranie.

Bo jak nie to nadal nie rozumiem jak komputer rodzi sobie z wypisaniem w systemie 10 tego co wyliczy w 2.

Program zamienia liczbę dwójkową (czyli bajty w pamięci) na tekst, prosi system operacyjny o jego wypisanie, system operacyjny przekazuje to do sterownika karty grafiki, karta grafiki wysyła sygnał do monitora zapalający piksele tworzące odpowiedni kształt, który Ty (nie komputer) interpretujesz jako liczbę w systemie dziesiętnym.

0

No ale jak mamy na przykład 101111011 to komputer nie może tego tak po prostu wyświetlić na monitorze w systemie 10.
W 16 owszem.

0

najpierw musi zamienić to na ciąg znaków korzystając z algorytmu podobnego do tego który dostałeś w drugim poście, potem w czcionce musi znaleźć opis graficzny znaku który trzeba wyświetlić i dopiero to narysować na monitorze (lub w trybie tekstowym wysłać po prostu kod znaku bezpośrednio do karty graficznej)
w ogóle nie da się wyświetlać na monitorze cyfr - można tylko na nim rysować - od liczby binarnej w pamięci komputera do liczby na ekranie monitora długa droga

1
Kamil95PL napisał(a):

No ale jak mamy na przykład 101111011 to komputer nie może tego tak po prostu wyświetlić na monitorze w systemie 10.
W 16 owszem.

Zobacz: 379. Może? Może! Chyba, że komputer nie załapał, że to system dziesiętny i myśli, że to szesnastkowo. To może jeszcze raz: 379d. Jeśli widzisz tutaj napis "379d", to znaczy że Twój komputer też umie wyświetlić liczbę 101111011 w zapisie dziesiętnym ;-)

Nie jesteś aby trollem? Pytam, bo poziom trudności Twoich pytań jest zerowy, a w internecie masz nie tysiące, a miliony stron, które odpowiedzą na Twoje problemy. Jeśli nie umiesz znaleźć takich linków, to zostań sprzedawcą czekoladek w Kanadzie, zamiast zabierać się za dużo bardziej skomplikowane problemy związane z programowaniem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1