Bitwise and operations in java

Java Bitwise and Shift Operators

In Java, bitwise operators perform operations on integer data at the individual bit-level. Here, the integer data includes byte , short , int , and long types of data.

There are 7 operators to perform bit-level operations in Java.

1. Java Bitwise OR Operator

The bitwise OR | operator returns 1 if at least one of the operands is 1. Otherwise, it returns 0.

The following truth table demonstrates the working of the bitwise OR operator. Let a and b be two operands that can only take binary values i.e. 1 or 0.

The above table is known as the «Truth Table» for the bitwise OR operator.

Let’s look at the bitwise OR operation of two integers 12 and 25.

12 = 00001100 (In Binary) 25 = 00011001 (In Binary) Bitwise OR Operation of 12 and 25 00001100 | 00011001 ____________ 00011101 = 29 (In Decimal)

Example 1: Bitwise OR

2. Java Bitwise AND Operator

The bitwise AND & operator returns 1 if and only if both the operands are 1. Otherwise, it returns 0.

The following table demonstrates the working of the bitwise AND operator. Let a and b be two operands that can only take binary values i.e. 1 and 0.

Let’s take a look at the bitwise AND operation of two integers 12 and 25.

12 = 00001100 (In Binary) 25 = 00011001 (In Binary) // Bitwise AND Operation of 12 and 25 00001100 & 00011001 ____________ 00001000 = 8 (In Decimal)

Example 2: Bitwise AND

3. Java Bitwise XOR Operator

The bitwise XOR ^ operator returns 1 if and only if one of the operands is 1. However, if both the operands are 0 or if both are 1, then the result is 0.

The following truth table demonstrates the working of the bitwise XOR operator. Let a and b be two operands that can only take binary values i.e. 1 or 0.

Let’s look at the bitwise XOR operation of two integers 12 and 25.

12 = 00001100 (In Binary) 25 = 00011001 (In Binary) // Bitwise XOR Operation of 12 and 25 00001100 ^ 00011001 ____________ 00010101 = 21 (In Decimal)

Example 4: Bitwise XOR

4. Java Bitwise Complement Operator

The bitwise complement operator is a unary operator (works with only one operand). It is denoted by ~ .

It changes binary digits 1 to 0 and 0 to 1.

Java Bitwise complement operator converts 0 to 1 and 1 to 0

It is important to note that the bitwise complement of any integer N is equal to — (N + 1). For example,

Consider an integer 35. As per the rule, the bitwise complement of 35 should be -(35 + 1) = -36. Now let’s see if we get the correct answer or not.

35 = 00100011 (In Binary) // using bitwise complement operator ~ 00100011 __________ 11011100

In the above example, we get that the bitwise complement of 00100011 (35) is 11011100. Here, if we convert the result into decimal we get 220.

Читайте также:  Плавная смена фонового изображения css

However, it is important to note that we cannot directly convert the result into decimal and get the desired output. This is because the binary result 11011100 is also equivalent to -36.

To understand this we first need to calculate the binary output of -36.

2’s Complement

In binary arithmetic, we can calculate the binary negative of an integer using 2’s complement.

1’s complement changes 0 to 1 and 1 to 0. And, if we add 1 to the result of the 1’s complement, we get the 2’s complement of the original number. For example,

// compute the 2's complement of 36 36 = 00100100 (In Binary) 1's complement = 11011011 2's complement: 11011011 + 1 _________ 11011100

Here, we can see the 2’s complement of 36 (i.e. -36) is 11011100. This value is equivalent to the bitwise complement of 35.

Hence, we can say that the bitwise complement of 35 is -(35 + 1) = -36.

Example 3: Bitwise Complement

Java Shift Operators

There are three types of shift operators in Java:

5. Java Left Shift Operator

The left shift operator shifts all bits towards the left by a certain number of specified bits. It is denoted by

Bits are shifted one position left and 0 is added to the last position

As we can see from the image above, we have a 4-digit number. When we perform a 1 bit left shift operation on it, each individual bit is shifted to the left by 1 bit.

As a result, the left-most bit (most-significant) is discarded and the right-most position(least-significant) remains vacant. This vacancy is filled with 0s.

Example 5: Left Shift Operators

5. Java Signed Right Shift Operator

The signed right shift operator shifts all bits towards the right by a certain number of specified bits. It is denoted by >> .

When we shift any number to the right, the least significant bits (rightmost) are discarded and the most significant position (leftmost) is filled with the sign bit. For example,

// right shift of 8 8 = 1000 (In Binary) // perform 2 bit right shift 8 >> 2: 1000 >> 2 = 0010 (equivalent to 2)

Here, we are performing the right shift of 8 (i.e. sign is positive). Hence, there no sign bit. So the leftmost bits are filled with 0 (represents positive sign).

// right shift of -8 8 = 1000 (In Binary) 1's complement = 0111 2's complement: 0111 + 1 _______ 1000 Signed bit = 1 // perform 2 bit right shift 8 >> 2: 1000 >> 2 = 1110 (equivalent to -2)

Here, we have used the signed bit 1 to fill the leftmost bits.

Example 6: Signed Right Shift Operator

class Main < public static void main(String[] args) < int number1 = 8; int number2 = -8; // 2 bit signed right shift System.out.println(number1 >> 2); // prints 2 System.out.println(number2 >> 2); // prints -2 > >

7. Java Unsigned Right Shift Operator

Java also provides an unsigned right shift. It is denoted by >>> .

Читайте также:  Javascript class name error

Here, the vacant leftmost position is filled with 0 instead of the sign bit. For example,

// unsigned right shift of 8 8 = 1000 8 >>> 2 = 0010 // unsigned right shift of -8 -8 = 1000 (see calculation above) -8 >>> 2 = 0010

Example 7: UnSigned Right Shift

class Main < public static void main(String[] args) < int number1 = 8; int number2 = -8; // 2 bit signed right shift System.out.println(number1 >>> 2); // prints 2 System.out.println(number2 >>> 2); // prints 1073741822 > >

As we can see the signed and unsigned right shift operator returns different results for negative bits. To learn more visit the Difference between >> and >>>.

Table of Contents

Источник

Bitwise and operations in java

«Очень интересно» . Только НЕПОНЯТНО. Зачем это нужно? Хорошо, что у нас есть Гугл, который говорит: Побитовые операции пременяются для быстрого выполнения вычислений и меньшего потребления ресурсов, связанных с этими вычислениями. Если б с этих слов начиналась статья, дальше уже хоть 100 страниц текста, читались бы на релаксе.

https://javarush.com/quests/lectures/questsyntaxpro.level08.lecture06 вот в этой лекции из квеста javarush сказано, что не все операции выполняются с лева на право, а например унарные операции выполняются с права на лево, а тут пишут — «Все операции выполняются слева направо, однако с учетом своего приоритета.» кто ошибается, подскажите пожалуйста))

Для чего нужны Сдвиги влево и в право? хоть бы один реальный пример из программы выполняющей конкретную задачу

Замечательно написано! Освежила в памяти знания, все просто понятно логично и подробно. Александр, спасибо за лекцию!

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Источник

Bitwise and operations in java

  • Binary representation of a given number
  • Count set bits in an integer
  • Add two bit strings
  • Turn off the rightmost set bit
  • Rotate bits of a number
  • Compute modulus division by a power-of-2-number
  • Find the Number Occurring Odd Number of Times
  • Program to find whether a given number is power of 2
  • Find position of the only set bit
  • Check for Integer Overflow
  • Find XOR of two number without using XOR operator
  • Check if two numbers are equal without using arithmetic and comparison operators
  • Detect if two integers have opposite signs
  • How to swap two numbers without using a temporary variable?
  • Russian Peasant (Multiply two numbers using bitwise operators)
  • Swap bits in a given number
  • Smallest of three integers without comparison operators
  • Compute the minimum or maximum of two integers without branching
  • Smallest power of 2 greater than or equal to n
  • Program to find parity
  • Check if binary representation of a number is palindrome
  • Generate n-bit Gray Codes
  • Check if a given number is sparse or not
  • Euclid’s Algorithm when % and / operations are costly
  • Calculate square of a number without using *, / and pow()
  • Copy set bits in a range
  • Check if a number is Bleak
  • Gray to Binary and Binary to Gray conversion
  • Next higher number with same number of set bits
  • Find the maximum subarray XOR in a given array
  • Find longest sequence of 1’s in binary representation with one flip
  • Closest (or Next) smaller and greater numbers with same number of set bits
  • Bitmasking and Dynamic Programming | Travelling Salesman Problem
  • Compute the parity of a number using XOR and table look-up
  • XOR Encryption by Shifting Plaintext
  • Count pairs in an array which have at least one digit common
  • Python program to convert floating to binary
  • Booth’s Multiplication Algorithm
  • Number of pairs with Pandigital Concatenation
  • Find the n-th number whose binary representation is a palindrome
  • Find the two non-repeating elements in an array of repeating elements/ Unique Numbers 2
  • Write an Interview Experience
  • Share Your Campus Experience
  • Bitwise Algorithms
  • Introduction to Bitwise Algorithms – Data Structures and Algorithms Tutorial
  • Bitwise Operators in C/C++
  • Bitwise Operators in Java
  • Python Bitwise Operators
  • JavaScript Bitwise Operators
  • All about Bit Manipulation
  • Little and Big Endian Mystery
  • Bits manipulation (Important tactics)
  • Binary representation of a given number
  • Count set bits in an integer
  • Add two bit strings
  • Turn off the rightmost set bit
  • Rotate bits of a number
  • Compute modulus division by a power-of-2-number
  • Find the Number Occurring Odd Number of Times
  • Program to find whether a given number is power of 2
  • Find position of the only set bit
  • Check for Integer Overflow
  • Find XOR of two number without using XOR operator
  • Check if two numbers are equal without using arithmetic and comparison operators
  • Detect if two integers have opposite signs
  • How to swap two numbers without using a temporary variable?
  • Russian Peasant (Multiply two numbers using bitwise operators)
  • Swap bits in a given number
  • Smallest of three integers without comparison operators
  • Compute the minimum or maximum of two integers without branching
  • Smallest power of 2 greater than or equal to n
  • Program to find parity
  • Check if binary representation of a number is palindrome
  • Generate n-bit Gray Codes
  • Check if a given number is sparse or not
  • Euclid’s Algorithm when % and / operations are costly
  • Calculate square of a number without using *, / and pow()
  • Copy set bits in a range
  • Check if a number is Bleak
  • Gray to Binary and Binary to Gray conversion
  • Next higher number with same number of set bits
  • Find the maximum subarray XOR in a given array
  • Find longest sequence of 1’s in binary representation with one flip
  • Closest (or Next) smaller and greater numbers with same number of set bits
  • Bitmasking and Dynamic Programming | Travelling Salesman Problem
  • Compute the parity of a number using XOR and table look-up
  • XOR Encryption by Shifting Plaintext
  • Count pairs in an array which have at least one digit common
  • Python program to convert floating to binary
  • Booth’s Multiplication Algorithm
  • Number of pairs with Pandigital Concatenation
  • Find the n-th number whose binary representation is a palindrome
  • Find the two non-repeating elements in an array of repeating elements/ Unique Numbers 2
Читайте также:  Ajax response json and html

Источник

Оцените статью