Kezdőoldal » Számítástechnika » Programozás » Bitműveletekről van szó....

Bitműveletekről van szó. Egyszerűen nemtudom, hogy az egyes bit indexeken lévő számokat hogy lehet összeadni C nyelvben? Egy feladathoz kellene! Köszönöm a segítséget!

Figyelt kérdés

A feladat így szól:

1.) Írj olyan eljárást, ami két paraméterül kapott unsigned int típusú szám közül a képernyőre írja azt, amelyiknek bináris alakjában kevesebb egyes szerepel. Ha azonos az egyesek száma, akkor az elsőt adja vissza.


2010. dec. 13. 14:28
 1/5 anonim ***** válasza:

Az unsigned int az egy könnyítés, minden szám nemnegatív.


Egy ötlet: ha átváltás nélkül megszorzod kettővel, és a felső biten 1 volt, akkor túl kell csorduljon, vagyis kisebb lesz az eredetinél. Ezt ciklusban ismételve lehet vizsgálni, hány egyes volt.

2010. dec. 13. 14:46
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
Ugyanez fordítva: felezgeted, és megnézed, a fele páratlan-e, vagyis a legkisebb helyiértékű bitre hányszor került 1.
2010. dec. 13. 14:48
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

Nagyon egyszerű a dolog.


unsigned szam = 12;

int sum = 0;

while(0 != szam)

{

sum += szam%2;

szam >>= 1;

}

2010. dec. 13. 14:53
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
tehát ha unsigned inttel deklarálok adok meg egy számot, azt a program már bináris számként kezeli? tehát itt az unsigned szam = 12 egyenlő a 1100? és külön értelmezi az összes számjegyet? :(
2010. dec. 13. 15:25
 5/5 anonim ***** válasza:
Nem és igen. Ha deklarálsz egy BÁRMIT, annak lesz bináris alakja, mivel a számítógép csak úgy tudja kezelni. De ezt az alakot nem éred el, nem tudod indexelni, hogy szam[i] az i. bit. Az egyes biteket csak bitműveletekkel tudod elérni. Ilyen az és (&), a vagy (|), a kizáró vagy (^) és a negálás (~). És ilyenek a léptetések (>> és <<), ezek mind a bitalakjával foglalkoznak a változónak. Amit írtam kódot az annyit csinál, hogy megvizsgálja az utolsó bit értékét (modulo 2, %2, ez ugye 1, ha páratlan, és 0 ha páros, kettes számrendszerben ez pont az utolsó számjegy 1 vagy 0 voltát jelenti), és utána lépteti jobbra, azaz a legjobboldali számjegy kiesik, a többi meg közelebb lép eggyel jobbra. Egy idő után 0 lesz a szám értéke, mert minden 1 bit kiment, és közben megszámoltuk őket.
2010. dec. 13. 19:54
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!