IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
adder
Člen
Avatar
adder:30.3.2014 9:27

ahoj, nedokážu si vysvětlit. jaktože to vyhodí 2? děkuji za odpověd.

class BitDemo {
     public static void main(String[] args) {
          int bitovaMaska = 0x000F;
          int hodnota = 0x2222;
          System.out.println(hodnota & bitovaMaska);  // vytiskne "2"
     }
}
Odpovědět
30.3.2014 9:27
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
arahusky
Člen
Avatar
arahusky:30.3.2014 9:35

Ahoj :), tak jak se na to divam, tak mne to pripada jasne:
v 16-tkove soustave je 0x00F cislo 00...0001111 a cislo 0x2222 neco co konci 100010, tudiz kdyz delas bitovy AND, tak ti vznikne 000.00010 coz je ale 2 :)

 
Nahoru Odpovědět
30.3.2014 9:35
Avatar
xxxvodnikxxx
Člen
Avatar
xxxvodnikxxx:30.3.2014 10:54

protože sice zapisuješ do intů hexa, ale potom to vypisuješ jako int, kdyby se udělalo něco ve smyslu Integer.toHex­String(myInt)
System.out.prin­tln(Integer.to­HexString(hod­nota & bitovaMaska));

Mělo by to vypsat HEXa tvaru, co jsi asi předpokládal :)

Nebo napsal jsem to blbě, vypisuješ jako string, ale jde o to, že int*int == int, nebo int & int == int

Editováno 30.3.2014 10:55
Nahoru Odpovědět
30.3.2014 10:54
Unix- svět, kde chcete být nulou :) (UID)
Avatar
Artas
Tvůrce
Avatar
Odpovídá na adder
Artas:30.3.2014 12:11

0x000F = 0000000000001111b
0x2222 = 0010001000100010b


& 0000000000000010b == 2d

Editováno 30.3.2014 12:12
 
Nahoru Odpovědět
30.3.2014 12:11
Avatar
Odpovídá na adder
Libor Šimo (libcosenior):30.3.2014 16:11

& je bitový súčin
x & y
i-ty bit bitového súčinu bude 1 ak i-ty bit x aj i-ty bit y bude 1, v opačnom prípade bude i-ty bit 0

Nahoru Odpovědět
30.3.2014 16:11
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
adder
Člen
Avatar
adder:30.3.2014 18:13

Děkuji moc všem. Ještě bych se chtěl zeptat nebo ujistit:

int hodnota = 0x2222;

to 0x udává, že posloupnost zatím, bude v 16-vé soustavě? jinak přeji hezký den a ještě 1 děkuji :)

Nahoru Odpovědět
30.3.2014 18:13
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
Artas
Tvůrce
Avatar
Odpovídá na adder
Artas:30.3.2014 18:45

Ano, prefix 0x je pro šestnáckovou soustavu, 0 pak pro osmičkovou.

 
Nahoru Odpovědět
30.3.2014 18:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.