Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Daniel K.

Zamiana z systemu binarnego na dziesiętny

Rekomendowane odpowiedzi

Mógłby mi ktoś podpowiedzieć jak zapisać liczbę w systemie binarnym podawaną z klawiatury przez użytkownika, tak aby później poszczególne cyfry (z których składa się liczba binarna) mogły być mnożone przed podstawę do dopowiedniej potęgi?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Mógłby mi ktoś podpowiedzieć jak zapisać liczbę w systemie binarnym podawaną z klawiatury przez użytkownika, tak aby później poszczególne cyfry (z których składa się liczba binarna) mogły być mnożone przed podstawę do dopowiedniej potęgi?

troszke nie rozumiem =]

masz problem z zamianą liczby na binarną, czy co?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam problem z napisaniem programu w języku ANSI C zamieniającą liczbę binarną na dziesiętną.

 

Z zamianą z dziesiętnego systemu na binarny sobie poradziłem...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Mam problem z napisaniem programu w języku ANSI C zamieniającą liczbę binarną na dziesiętną.

 

Z zamianą z dziesiętnego systemu na binarny sobie poradziłem...

damn, to sie pierwszy raz spotykam, zeby ktos z binarnego nie umiał na dziesiętny, a z bin na dec umiał... a na kartce umiesz to zrobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
damn, to sie pierwszy raz spotykam, zeby ktos z binarnego nie umiał na dziesiętny, a z bin na dec umiał... a na kartce umiesz to zrobić?

Ja wiem chyba o co mu chodzi, tez mialem taki problem w podstawowce :)

 

Jak juz napisales przeliczanie z 10 na 2 to git (zapewne uzywales dzielenia modulo i reszta z tego dzielenia dawala ci cyrferke ktora zapisywales jako binarne "0" lub "1" :))

 

 

Teraz robisz tak:

 

majac liczbe "binarna" (np. 101) zapewne nie wiesz jak podstawic ja do wzoru podanego w wiki (patrz post wyzej). Jedyne co ci jest potrzebne to poszczegolne cyfry z liczby binarnej.

 

101 mod 10 = 1 ->masz pierwsza "1" do podstawienia do zworu (o wadze 0

101 / 10 = 10 (w zalozeniu ze operujesz na liczbach calkowitych, jesli nie to uzyj floor do zaokraglenia w dol)

 

10 mod 10 = 0 -> masz kolejna cyfre "0" o wadze 1

 

10 / 10 = 1

 

1 mod 10 = 1 ->i ostatnia cyfra "1" o wadze 2.

 

 

teraz juz majac wszystko co trzeba...

 

1 * 2^0 + 0*2^1 + 1*2^2 = 5 :)

 

powodzonka ;P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
101 mod 10 = 1 ->masz pierwsza "1" do podstawienia do zworu (o wadze 0

101 / 10 = 10 (w zalozeniu ze operujesz na liczbach calkowitych, jesli nie to uzyj floor do zaokraglenia w dol)

 

10 mod 10 = 0 -> masz kolejna cyfre "0" o wadze 1

 

10 / 10 = 1

 

1 mod 10 = 1 ->i ostatnia cyfra "1" o wadze 2.

teraz juz majac wszystko co trzeba...

 

1 * 2^0 + 0*2^1 + 1*2^2 = 5 :)

 

powodzonka ;P

heh... nigdy bym nie wpadł na to zeby liczbe binarną zapisac w pamieci jako liczbe dziesiętną... 101 to nie jest sto jeden...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Liczbę binarną wprowadzasz z klawiatury jako tekst.

A resztę już koledzy wyżej wyjaśnili.

Aha, zmiana znaku '1' na cyfrę 1 jest prosta: 1 = '1' - '0' :E

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Prosta pętla

int dec(char *c)
{
char *d = c;
int r = 0;

while(*d) // czy nie koniec łańcucha
{ 
	r = 2 * r + (*d - '0');
	d++;
}
return r;
}

Parametr to łańcuch z zapisaną liczba binarną jako tekst.

PS. Tym sposobem da się zamienić z dowolnego systemu o podstawie < 10 na dziesiętny. Trzeba tylko w działaniu zamienić 2 na podstawę systemu. Przy postawach większych niż 10 trzeba zmienić jeszcze (*d - '0') żeby dawało dobre wartości dla cyfr większych niż 9.

PPS. Jeżeli dane są z klawiatury po jednej cyfrze, to zamiast przechodzenia po lańcuchu można brać kolejne znaki i podstawiać do wzoru r = 2 * r + (*d - '0'), zamiast *d zmienna z odczytanym znakiem, a zamiast d++ dać pobieranie kolejnego znaku. I tylko zmienić warunek końca liczby, ENTER albo spacja, zależy co pasuje do sytuacji.

 

PPPS. Robić mi się nie chce

int main()
{
  char d;
int r = 0;

d = getche();
while(d != 13) // kończyć ENTEREM
{ 
   r = 2 * r + (d - '0');
   d = getche();
}
printf("\n%d",r);
return 0;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
heh... nigdy bym nie wpadł na to zeby liczbe binarną zapisac w pamieci jako liczbe dziesiętną... 101 to nie jest sto jeden...

 

 

chodzilo mi o to ze chlopak na pewno wczytuje ta liczbe jako int/float/char *

 

zreszta nvm

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

  • Tematy

  • Odpowiedzi

    • https://www.facebook.com/LowcyBurzLodzkie/posts/pfbid0QUKddpwnKouxDEZ5JiQZ1Dv2tVCpv2aCbdmEFmZc1mdV7okToA95yJM6zjMkmwdel   Uprawy strasznie ucierpiały.       https://geekweek.interia.pl/technologia/news-winnice-ogrzewane-smiglowcem-polacy-wpadli-na-pomysl-jak-rat,nId,7468592#utm_source=paste&utm_medium=paste&utm_campaign=chrome        
    • Witam Może na wstępie podam specyfikacje kompa. Procesor: Intel Core i5-8400, 2.8 GHz RAM: GOODRAM 16GB (2x8GB) 3000MHz CL16 IRDM X Black Płyta główna: ASRock Z370 PRO4 (https://www.morele.net/plyta-glowna-asrock-z370-pro4-1533534/) Zasilacz: SilentiumPC Vero L2 500W Karta Graficzna: GeForce RTX 3060 Ti GAMING Z TRIO LHR 8GB GDDR6 Dysk SSD: SSD GOODRAM IRDM 240GB 2,5 SATA III   Dysk HDD: Toshiba P300 1TB 3.5" SATA III   Na dysku SSD zainstalowany jest system + utworzona druga partycja na gry. Z racji, że to mało miejsca, a dysk HDD już nie daje rady przy nowszych tytułach, chciałbym zastąpić go nowym SSD. W ciągu 1-2 lat planuję wymienić również procesor i w razie potrzeby płytę główną z zasilaczem. Na razie jednak jest kolej na nowy dysk i na nim teraz się skupiam. Nie jestem na czasie jeśli chodzi o obecny rynek dlatego potrzebuję pomocy. Czytałem trochę o dyska NVMe i przemawiają do mnie dużo bardziej. Myślę, że pojemność 2 TB będzie wystarczająca. Natrafiłem na model KC3000 firmy Kingston polecany przez wiele osób. Moje główne pytanie jest takie czy ten dysk pasowałby do mojego komputera? Wiem, że to PCIe 4.0, a w płycie głównej mam 3.0, ale podobno też pasuje, a skoro w przyszłości wymieniałbym płytę główną, to już z PCIe 4.0. Czy dokładając ten dysk nie obciąży mi się za bardzo zasilacz (o ile w ogóle będzie mieć na niego wpływ, bo znajduje informację, że pobór mocy to około 3W, ale nie wiem ile w tym prawdy)? Czy nie będzie żadnego problemu, żeby wszystkie dane ze starego HDD przenieść na nowy SSD?   Pozdrawiam i dziękuję za wszystkie odpowiedzi.      
    • @leelooo Niestety, ponowne wyszukiwanie nie dostarczyło bezpośrednich informacji dotyczących ostatniego logowania użytkownika @koziakaka ani danych o zdjęciu blokady konta. Jeśli potrzebujesz konkretnych informacji o stanie konta tego użytkownika, najlepiej będzie skontaktować się bezpośrednio z administracją forum, ponieważ takie dane często obejmują prywatne informacje, które nie są publicznie dostępne na forum.
    • Czyli co 5090 będzie odpryskiem od B200. Ciekawe czy dadzą DP 2.1 i Neural Texture Compression.
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...