Explore BrainMass
Share

Java program using bitwise operations

This content was STOLEN from BrainMass.com - View the original, and get the already-completed solution here!

Implement your solution using one class. In your class, provide two methods - main and display.

main method:

Your main method should:

· Declare int number = 128;
· Include a while loop that loops while number is >= -128.
· Call the display method, which prints the value of its passed-in number parameter.
· If number is greater than zero, use the >>= operator to do one arithmetic-right shift.
· If number equals zero, use the ~ operator to complement it.
· If number is less than zero, use the <<= operator to do one left shift.
· After the while loop, ask the user to input any number, and call the display method to print that number.

display(number) method:

Write the display(number) method like this:

· Receive a number parameter.
· Print number's value and a tab. (t is tab in java)
· Assign to a local variable named mask the value 1 shifted left 31 times. This puts a 1 in bit 31 and zeros in all other bits.
· Use a for loop to step through all 32 bits, doing the following in each step:
o Use a conditional operator whose condition is (mask & number != 0) to print either 1 or 0.
o After every fourth bit, print a single space to make the output readable.

Sample Session:

Decimal Binary

128 0000 0000 0000 0000 0000 0000 1000 0000
64 0000 0000 0000 0000 0000 0000 0100 0000
32 0000 0000 0000 0000 0000 0000 0010 0000
16 0000 0000 0000 0000 0000 0000 0001 0000
8 0000 0000 0000 0000 0000 0000 0000 1000
4 0000 0000 0000 0000 0000 0000 0000 0100
2 0000 0000 0000 0000 0000 0000 0000 0010
1 0000 0000 0000 0000 0000 0000 0000 0001
0 0000 0000 0000 0000 0000 0000 0000 0000
-1 1111 1111 1111 1111 1111 1111 1111 1111
-2 1111 1111 1111 1111 1111 1111 1111 1110
-4 1111 1111 1111 1111 1111 1111 1111 1100
-8 1111 1111 1111 1111 1111 1111 1111 1000
-16 1111 1111 1111 1111 1111 1111 1111 0000
-32 1111 1111 1111 1111 1111 1111 1110 0000
-64 1111 1111 1111 1111 1111 1111 1100 0000
-128 1111 1111 1111 1111 1111 1111 1000 0000

Enter any integer: 127

127 0000 0000 0000 0000 0000 0000 0111 1111

Attached is what I have come up with but am making a mistake somewhere because I can't get it to compile and run.
Please help.

© BrainMass Inc. brainmass.com October 25, 2018, 1:55 am ad1c9bdddf
https://brainmass.com/computer-science/java/java-program-using-bitwise-operations-280213

Attachments

Solution Preview

Please rename the attached 280213.java as YourNameProg3.java before you compile ...

Solution Summary

Solutions merely fixes the slip in the submitted version of Java code.

$2.19
See Also This Related BrainMass Solution

Using bitwise operations to display a number in binary form

The bitwise-manipulation operators perform simultaneous bit manipulations and enable programs to process large quantities of binary information efficiently.

The binary & and | operators can implement bitwise "and" and "or" operations on corresponding bits in a pair of 32-bit int operands. This bit-manipulation capability enables Java to efficiently process large quantities of raw binary information. We use this capability to encrypt information sent over the Internet and to process graphical images. Suppose you have a 32-bit pattern of 1's and 0's in an integer called mask. You can use mask to either set to 1 or reset to 0 any subset of the bits in another integer called data:

- data |= mask; drives to 1 all bits in data that correspond to 1 bits in mask.
- data &= mask; drives to 0 all bits in data that correspond to 0 bits in mask.

In particular, you can use a mask having only one 1 bit to see if that particular bit is 1 in data. If (mask & data) != 0, that data bit is 1. If (mask & data) == 0, that data bit is 0.

The << shift-left operator shifts the bit pattern to the left by a number of bits indicated by the operand to the right of the operator, and it shifts zero into the right end. Each left shift multiplies the numerical value of the int operand by 2. The >> arithmetic shift-right operator shifts the bit pattern to the right by a number of bits indicated by the operand to the right of the operator. To preserve the sign, it shifts into the left end whatever was there before. Each arithmetic-right shift divides the numerical value of the int operand by two. The >>> logical shift-right operator shifts the bit pattern to the right by a number of bits indicated by the operand to the right of the operator, and it shifts zero into the left end. The >>> operator is the logical opposite of the << operator.

Java also includes a complement operator, ~. The complement operator simply reverses the polarity of all bits in the following int operand. Each bit that is 1 becomes 0, and each bit that is 0 it becomes 1. For example, if number is initially 0, ~number is -1, and vice versa.

Write a program that uses bitwise operations to:
1. generate and display all power-of-two numbers in the range +128 to -128, and
2. display an arbitrary user-input integer.

Sample Session:

Decimal Binary
128 0000 0000 0000 0000 0000 0000 1000 0000
64 0000 0000 0000 0000 0000 0000 0100 0000
32 0000 0000 0000 0000 0000 0000 0010 0000
16 0000 0000 0000 0000 0000 0000 0001 0000
8 0000 0000 0000 0000 0000 0000 0000 1000
4 0000 0000 0000 0000 0000 0000 0000 0100
2 0000 0000 0000 0000 0000 0000 0000 0010
1 0000 0000 0000 0000 0000 0000 0000 0001
0 0000 0000 0000 0000 0000 0000 0000 0000
-1 1111 1111 1111 1111 1111 1111 1111 1111
-2 1111 1111 1111 1111 1111 1111 1111 1110
-4 1111 1111 1111 1111 1111 1111 1111 1100
-8 1111 1111 1111 1111 1111 1111 1111 1000
-16 1111 1111 1111 1111 1111 1111 1111 0000
-32 1111 1111 1111 1111 1111 1111 1110 0000
-64 1111 1111 1111 1111 1111 1111 1100 0000
-128 1111 1111 1111 1111 1111 1111 1000 0000

Enter any integer: 127
127 0000 0000 0000 0000 0000 0000 0111 1111

Implement your solution using one class. In your class, provide two methods - main and display.

Your main method should:
- Declare int number = 128;
- Include a while loop that loops while number is >= ­128.
- Call the display method, which prints the value of its passed-in number parameter.
- If number is greater than zero, use the >>= operator to do one arithmetic-right shift.
- If number equals zero, use the ~ operator to complement it.
- If number is less than zero, use the <<= operator to do one left shift.
- After the while loop, ask the user to input any number, and call the display method to print that number.

Write the display(number) method like this:
- Receive a number parameter.
- Print number's value and a tab.
- Assign to a local variable named mask the value 1 shifted left 31 times. This puts a 1 in bit 31 and zeros in all other bits.
- Use a for loop to step through all 32 bits, doing the following in each step:
+ Use a conditional operator whose condition is (mask & number != 0) to print either 1 or 0.
+ After every fourth bit, print a single space to make the output readable.

View Full Posting Details