2013-07-14 19 views
5

Robię program z Javą przez około rok, ale wciąż znajdowałem coś, czego nie wiem. W jaki sposób:Java | operator z liczbami całkowitymi;

new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4); 

Jak | działa z liczbami całkowitymi?

Dziękuję

PS: Dużo googlowałem.

+4

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html –

+0

1 musi być własnością, a 4 musi być inną własnością, więc OR używa ich obu. –

+0

@huseyintugrulbuyukisik OP chce wiedzieć, jak dokładnie '|' łączy dwie właściwości. – MathSquared

Odpowiedz

7

Jest to bitowy operator OR, działa na jednym lub kilku wzorcach bitowych lub liczbach binarnych na poziomie ich poszczególnych bitów.

Bitowy^operator wykonuje bitową operację wyłączności LUB.

LUB operacja bitowa zwróci 1, jeśli dowolny z argumentów wynosi 1, a zero tylko wtedy, gdy oba operandy są zerami.

Pełny opis można uzyskać pod numerem JLS 15.22.1.

0|0 = 0 
0|1 = 1 
1|0 = 1 
1|1 = 1 

Stąd w przypadku, gdy argumenty są 1 i 4. Konwertowanie ich na binarne (tylko ostatnie 4 cyfry) będzie odpowiednio następujące: 0100 i 0001. Zastosuj | teraz po trochu:

0 1 0 0 
0 0 0 1 
--------- 
0 1 0 1 = (5 in base 10) 
11

Operator | oblicza "bit-wise OR" swoich argumentów. Aby to zrozumieć, musisz przekształcić operandy na binarne: tworzy bit "0", jeśli bit nie jest ustawiony w liczbach, i bit "1", jeśli jest ustawiony w którymkolwiek z nich.

Z numerów, wynik 4|1 jest 5 ponieważ:

4 = 100 
    1 = 001 
4|1 = 101 = 5 

Bit mądry Operator OR jest związany z "bit-mądry AND" operator &, która produkuje "0", jeżeli bit nie jest ustawiony w jednej z liczb i bit "1", jeśli jest ustawiony w obu.

Ponieważ operatorzy ci działają na bitowej reprezentacji swoich argumentów, mogą być trudni do zrozumienia, gdy jesteś przyzwyczajony do pracy z liczbami dziesiętnymi (podstawa 10). Poniższa relacja trzyma, co sprawia, że ​​jest łatwy do uzyskania wyniku jednego, gdy masz inne:

a + b = (a|b) + (a&b) 
+1

Uwaga: te operatory są znacznie łatwiejsze do zrozumienia dla człowieka, jeśli używasz stałych binarnych, ósemkowych lub szesnastkowych. na przykład 0xF124 | 0x0228 = 0xF32C. – user949300

+0

@ user949300 Mam tendencję do definiowania stałych jako '1 << 0',' 1 << 1' itd. Nie robisz matematyki, odwracasz bity w "bitowej tablicy", używając czegoś innego niż bitów jak niepotrzebne obciążenie kognitywne. – millimoose

1

| nazywa bitowe OR.To działa na zasadzie:

  1. Konwersja każdego numeru do binarnego
  2. Doing logiczna OR (||) na każdej cyfry w pozycji dopasowanej (0 jest fałszywe, 1 jest prawdą)
  3. Konwersja wynik z powrotem na dziesiętne

Przykładowo

100 | 4 
OR 001 | 1 
-------+-- 
    101 | 5 

właściwości na Font konstruktor jest tak skonstruowany binarnie, dokładnie jedna cyfra to 1. Poprzez ORing tych liczb, otrzymujesz cyfry włączone, które reprezentują opcje, które są ORed.

Powiązane problemy