Подтвердить что ты не робот

Оператор Pipe (|) в Java

У меня есть это выражение в Java:

System.out.println(3|4); 

Почему вывод 7?

4b9b3361

Ответ 1

Это побитовая операция ИЛИ. Он модифицирует объекты на двоичном уровне.

             011                     3
in binary: | 100     in decimal:  |  4
             ___                   ___
             111                     7

Откройте Windows calc в научном режиме. Вы можете переключаться между десятичным и двоичным (и шестнадцатеричным) и выполнять побитовые операции, включая or, and, xor и т.д.

Чтобы поразмыслить или в голове или на бумаге, сравните каждую цифру того же порядкового номера. Если любое число равно 1, результат в этом порядковом номере будет равен 1.

Ответ 2

Оператор | выполняет "побитовое ИЛИ". Вывод побитового ИЛИ на два бита равен 1, если один бит равен 1 или 0, если оба бита равны 0. Побитовое ИЛИ на двух номерах просто побитовое ИЛИ на каждом бите индивидуально.

Вот как работает 3|4:

  3:  00000011
  4:  00000100
--------------
3|4:  00000111 = 7

Ответ 4

Двоичное представление:

 3 = 00000011
 4 = 00000100

| is bitwise OR operator

когда вы ИЛИ два числа, вы берете двоичное представление, а результат OR - 1 IFF для этого столбца, по крайней мере, один столбец устанавливается true (1)

So

00000011
00000100
--------
00000111

тогда столбцы сообщают вам значение в этой позиции:

128, 64, 32, 16, 8, 4, 2, 1

так

128, 64, 32, 16, 8, 4, 2, 1
 0 ,  0,  0,  0, 0, 1, 1, 1  

любой столбец с 1 означает, что вы добавляете это значение столбца:

4 + 2 + 1 = 7

Ответ 5

| является "побитовым" или "оператором". в | b, если n-й бит a и/или b равен 1, n-й бит результата будет равен 1. 3 - 11 в двоичном формате. 4 - 100 в двоичном формате.

0  1  1
or or or
1  0  0
=  =  =
1  1  1

И 111 является двоичным представлением 7.

Ответ 6

Полезно понять, что существует обобщенная система подсчета оснований этого. Двоичная база - 2. Знакомым десятичным является основание-10. Для Windows 8-го уровня используется базовая 8.

Числовое значение получается путем сложения отдельных значений каждой из его цифр. Для любой цифры это значение получается из простой формулы.

(цифра) * (база) ^ (количество мест слева от десятичной точки)

123 = сто двадцать три = (1 * 10 ^ 2) + (2 * 10 ^ 1) + (3 * 10 ^ 0) = 100 + 20 + 3

Я узнал, что в CS211 (не хвастаясь, просто вспоминая)

Ответ 7

Поскольку побитовые операторы могут немного запутываться, а не что-то их соотнести, то, как я объяснил их функции не программистам, даже это то, что вы просто подставляете 1 для true и 0 для false, а затем они ведут себя одинаково с операторы на английском языке:

Луна синяя И небо синее, ложно

0 и 1 равно 0

Луна синяя ИЛИ небо синее, истинно

0 или 1 равно 1

но аналогия ломается, когда я добираюсь до:

океан синий XOR деревья зеленые, false