Forum PCLab.pl: Zamiana z systemu binarnego na dziesiętny - Forum PCLab.pl

Skocz do zawartości


Otwarty

Ikona Najnowsze pliki

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

Zamiana z systemu binarnego na dziesiętny Oceń temat: -----

#1 Użytkownik jest niedostępny   Daniel K. Ikona

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 14
  • Dołączył: Wed, 14 Mar 07

Napisany 14 Marzec 2007 - 20:10

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?

#2 Użytkownik jest niedostępny   mr262560 Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1687
  • Dołączył: Wed, 26 Maj 04

Napisany 14 Marzec 2007 - 20:17

Zobacz postDaniel K., o 14 marca 2007, 20:10, napisał(a):

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?

#3 Użytkownik jest niedostępny   Daniel K. Ikona

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 14
  • Dołączył: Wed, 14 Mar 07

Napisany 14 Marzec 2007 - 20:20

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

#4 Użytkownik jest niedostępny   GEGE Ikona

  • Orator
  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 570
  • Dołączył: Pn, 25 Wrz 06

Napisany 14 Marzec 2007 - 21:11

http://pl.wikipedia..../System_binarny

#5 Użytkownik jest niedostępny   mr262560 Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1687
  • Dołączył: Wed, 26 Maj 04

Napisany 14 Marzec 2007 - 21:32

Zobacz postDaniel K., o 14 marca 2007, 20:20, napisał(a):

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

#6 Użytkownik jest niedostępny   Muniek_ Ikona

  • Gaduła
  • PipPipPip
  • Grupa: Forumowicze
  • Postów: 101
  • Dołączył: Wt, 27 Cze 06

Napisany 14 Marzec 2007 - 22:00

Zobacz postrojmarek, o 14 marca 2007, 21:32, napisał(a):

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

#7 Użytkownik jest niedostępny   mr262560 Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1687
  • Dołączył: Wed, 26 Maj 04

Napisany 14 Marzec 2007 - 22:27

Zobacz postMuniek_, o 14 marca 2007, 22:00, napisał(a):

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

#8 Użytkownik jest niedostępny   mieszek Ikona

  • Nieźle porąbany facet
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 9682
  • Dołączył: So, 15 Mar 03

Napisany 15 Marzec 2007 - 08:26

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

#9 Użytkownik jest niedostępny   ArturJak Ikona

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 3139
  • Dołączył: Pt, 13 Maj 05

Napisany 15 Marzec 2007 - 08:47

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

Ten post był edytowany przez ArturJak dnia: 15 Marzec 2007 - 09:17


#10 Użytkownik jest niedostępny   Muniek_ Ikona

  • Gaduła
  • PipPipPip
  • Grupa: Forumowicze
  • Postów: 101
  • Dołączył: Wt, 27 Cze 06

Napisany 15 Marzec 2007 - 13:45

Zobacz postrojmarek, o 14 marca 2007, 22:27, napisał(a):

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

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych