Я делаю программу с Java около года, но все-таки нашел что-то, чего не знаю. Как сделать:Java | оператор с целыми числами;
new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4);
Как сделать: работает с целыми числами?
Thank you
P.S. Я много искал.
Я делаю программу с Java около года, но все-таки нашел что-то, чего не знаю. Как сделать:Java | оператор с целыми числами;
new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4);
Как сделать: работает с целыми числами?
Thank you
P.S. Я много искал.
Это поразрядный оператор 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)
Оператор |
вычисляет "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)
Примечание: Эти операторы намного легче понять человеку, если вы используете бинарные, восьмеричные или шестнадцатеричные константы. например 0xF124 | 0x0228 = 0xF32C. – user949300
@ user949300 Я обычно определяю константы как '1 << 0',' 1 << 1' и т. Д. Вы не выполняете математику, вы перебрасываете биты в «бит-массив», используя что-либо еще, кроме бит как ненужные когнитивные накладные расходы. – millimoose
|
называется побитовое ИЛИ.Это работает:
||
) на каждую цифре в позиции соответствия (0 ложно, 1 верно)Например,
100 | 4
OR 001 | 1
-------+--
101 | 5
свойства наКонструкторсконструирован таким образом, что в двоичном выражении точно одна цифра равна 1. Путем ORing этих чисел вы получаете цифры, которые отображают опции ORed.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html –
1 должно быть свойство, а 4 должно быть другим свойством, поэтому OR использует их обоих. –
@huseyintugrulbuyukisik OP хочет знать, как именно '' 'объединяет два свойства. – MathSquared