Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

iz binarnog u decimalni oblik

[es] :: C/C++ programiranje :: iz binarnog u decimalni oblik

[ Pregleda: 2177 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nenadnesta
Nenad Stojkovic
student

Član broj: 263759
Poruke: 23
*.mts.telekom.rs.



Profil

icon iz binarnog u decimalni oblik10.12.2010. u 22:59 - pre 162 meseci
#include <stdio.h>
main()
{ int c, broj2=0;

printf("\n\nZadati neki drugi broj od 2B u binarnom obliku: ");
while((c=getchar()) != '\n')
broj2 = broj2*2 + (c-'0');
printf("Zadati broj u decimalnom obliku: %d\n", broj2);

ako bi neko mogao da pojasni naredbu

broj2 = broj2*2 + (c-'0');

sta znaci ovo (c-'0') ?

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: iz binarnog u decimalni oblik11.12.2010. u 00:22 - pre 162 meseci
Kad uneseš neku cifru ta cifra je u rasponu od '0' do '9' (obrati pažnju na navodnike), ili potpuno istovetno ovome u rasponu od 48 do 57 (ovog puta bez navodnika). Stvar je u tome što je u programskom jeziku C svaki char istovremeno i broj i znak, pa tako znak '0' (u takozvanoj ASCII tabeli) ima vrednost 48. Izraz c - '0' (ili ekvivalentno c - 48) će pretvoriti znak u vrednost tog znaka, recimo ako je c=='5' onda je c - '0' == 5 (bez navodnika).
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: iz binarnog u decimalni oblik11.12.2010. u 00:41 - pre 162 meseci
Pozdrav,

ne znam da li ti nije jasan algoritam za dobijanje binarnog broja ili samo c-'0' deo?

U svakom slucaju:
U C-u se char predstavlja jednim bajtom i imaju ASCII vrednosti (0-255). Kada procitas sa ulaza neki karakter sa c=getchar() ( recimo 1 ), promenljiva c dobije vrednost 49 (ASCII vrednost 1). Posto zelis da saznas da li je uneta 0 ili 1 (ascii 48 ili 49), nacin za to je da oduzmes 48 od karaktera koji je procitan sa ulaza i ono sto ti ostane je uneta cifra. Da ne bi morao da pamtis koji karakter se kako koduje ASCII kodom, mozes da da koristis '0' i to ce biti interpretirano kao ASCII vrednost karaktera 0 (sto je 48).


/edit: Pretece me Mihajlo dok sam vecerao :) Moze da se obrise post.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

nenadnesta
Nenad Stojkovic
student

Član broj: 263759
Poruke: 23
*.mts.telekom.rs.



Profil

icon Re: iz binarnog u decimalni oblik11.12.2010. u 12:13 - pre 162 meseci
e, hvala ljudi, sada je sve mnogo jasnije...
nego kad smo vec kod ovih konverzija imam jos jednu nedoumicu:
ona se tice prebacivanja sada iz decimalnog u binarni broj...

#include <stdio.h>
main() {
short dec, i, bit;

while(1) {
printf("decimalni broj?");
scanf("%hd, &dec");

if(dec==9999) break;

printf("binarni broj:");

for(i=1; i<=16; i++)
{
bit=(dec&0x8000)!=0;

printf ("%d",bit);
if(i%4==0) printf(" ");

dec<<=1;
}

printf ("\n");
}
}

da li se ucitani decimalni broj kada se ubaci u izraz bit=(dec&0x8000)!=0;
automatski konvertuje u binarni oblik s obzirom na operator za manipulaciju nad bitovima & ?
i ako moze dalje pojashnjenje bit=(dec&0x8000)!=0; izraza,
promenljivoj bit dodeljuje se neka vrednost, zashto stoji razlichito od nula za izraz u zagradama ?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: iz binarnog u decimalni oblik11.12.2010. u 12:59 - pre 162 meseci
Ne znam da li je ovo striktno po standardu, ali bilo koji logički izraz ima kao rezultat nulu ako nije istinit ili jedinicu ako jeste. Možda C standard ovde kaže "različito od nule" za istinit izraz, to ne znam, ali dati kod se oslanja na to da je zaista u pitanju "jedinica". Ispitivanje da li je neka vrednost različita od nule je jedan takav logički izraz. Rezultat operacije (dec & 0x8000) != 0 će zato biti nula ako je dec & 0x8000 nula, a biće jedinica ako dec & 0x8000 nije nula. Izraz dec & 0x8000 neće biti nula samo ako u najjačem bitu promenljive dec stoji jedinica. Promenljiva bit će stoga dobiti vrednost 0 ili 1, i to će se dešavati u petlji 16 puta. Svaki put se ispisuje promenljiva bit (ali svaki put s novom vrednošću, zbog onog dec<<=1 na kraju petlje), a to na ekranu prividno izgleda kao da je ispisan ceo broj u binarnoj formi.
 
Odgovor na temu

[es] :: C/C++ programiranje :: iz binarnog u decimalni oblik

[ Pregleda: 2177 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.