2013-07-14 3 views
5

Я делаю программу с Java около года, но все-таки нашел что-то, чего не знаю. Как сделать:Java | оператор с целыми числами;

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

Как сделать: работает с целыми числами?

Thank you

P.S. Я много искал.

+4

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

+0

1 должно быть свойство, а 4 должно быть другим свойством, поэтому OR использует их обоих. –

+0

@huseyintugrulbuyukisik OP хочет знать, как именно '' 'объединяет два свойства. – MathSquared

ответ

7

Это поразрядный оператор OR, работает на одном или нескольких битовых шаблонах или двоичных цифрах на уровне их отдельных битов.

Оператор побитового оператора выполняет побитовое исключающее ИЛИ операцию.

ИЛИ побитовая операция вернет 1, если какой-либо из операндов равен 1 и нулю, только если оба операнда являются нулями.

Вы можете получить полное описание в JLS 15.22.1.

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

Таким образом, в вашем случае, операнды 1 и 4. Преобразование их в двоичный (только последние 4 цифры) будет 0100 и 0001 соответственно. Нанести | Теперь по крупицам:

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

Оператор | вычисляет "bit-wise OR" своих операндов. Чтобы понять это, вам нужно преобразовать операнды в двоичный: он создает бит «0», если бит не установлен ни в одном из чисел, ни в «1» бит, если он установлен в любом из них.

С вашими номерами, результатом 4|1 является 5, потому что:

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

Бит-накрест или оператор связан с «побитовое И» оператор &, который производит «0», если бит не устанавливается в одном из чисел и бит «1», если он установлен в обоих.

Поскольку эти операторы работают над поразрядным представлением своих аргументов, их может быть трудно понять, когда вы привыкли работать с десятичными (базовыми 10) номерами. Имеет место следующее соотношение, что позволяет легко получить результат один, когда у вас есть другой:

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

Примечание: Эти операторы намного легче понять человеку, если вы используете бинарные, восьмеричные или шестнадцатеричные константы. например 0xF124 | 0x0228 = 0xF32C. – user949300

+0

@ user949300 Я обычно определяю константы как '1 << 0',' 1 << 1' и т. Д. Вы не выполняете математику, вы перебрасываете биты в «бит-массив», используя что-либо еще, кроме бит как ненужные когнитивные накладные расходы. – millimoose

1

| называется побитовое ИЛИ.Это работает:

  1. Преобразование каждого числа в двоичные
  2. Выполнения логического ИЛИ (||) на каждую цифре в позиции соответствия (0 ложно, 1 верно)
  3. Преобразование результата обратно в десятичной

Например,

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

свойства наКонструкторсконструирован таким образом, что в двоичном выражении точно одна цифра равна 1. Путем ORing этих чисел вы получаете цифры, которые отображают опции ORed.

Смежные вопросы