Kezdőoldal » Számítástechnika » Programozás » Bitenkénti ÉS operátor C-ben (&)?

Bitenkénti ÉS operátor C-ben (&)?

Figyelt kérdés

Szóval itt van ez a decimálisból binárisba konverter:


int i;

for (i = 2; i >= 0; --i) {

printf("%lu", 5>>i & 1);

}


És ha kivennénk belőle a (& 1)-t akkor kapnánk 125, amit értek, hiszen 5:4,5:2 és 5:1. De a bitenkénti és, hogyan csinál 125-ből 101-t? A & nem csak egyesek és nullások esetén értelmezhető, amikor gyakorlatilag a szorzatukat írja ki?


És ha növelem a & utáni számot miért kapom a köetkezőket: 020, 121,004?


Előre is köszönöm!


2016. okt. 9. 16:05
 1/2 anonim ***** válasza:

Ha valamit összeÉSelsz 1-el akkor gyakorlatilag csak az utolsó bitet tartod meg:


11011101 &

00000001 =

00000001


10101000 &

00000001 =

00000000


Ha valamit 0-val ÉSelz össze akkor az 0, ha valamit 1-el akkor pedig önmaga.


A konverter úgy működik hogy az adott bitet elcsúsztatja úgy, hogy az utolsó bit legyen, majd ÉSsel kiszedi azt az utolsó bitet.


101>>2 = 001

001 &1 = 001


101>>1 = 010

010 &1 = 000


101>>0 = 101

101 &1 = 001


Tehát az 5-re 1,0,1 eredmények jönnek ki.


Nyilván ha nem 1-el ÉS-elsz hanem bináris 10-el akkor az utolsó előtti bitet fogja megtartani, ha pedig bináris 11-el ÉS-elsz akkor az utolsó kettő bitet.

2016. okt. 9. 16:26
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Köszi, sokat segítettél:)
2016. okt. 9. 16:43

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!