how can i take 1's complement in making a java program?

You can use Bitwise unary NOT operator

Check the Java Language Spec... there no such thing as a "Bitwise unary NOT operator". There is bitwise complement operator, just like the previous poster already said.

ps You can also exclusive OR with a value of all 1 bits.

In Java ints are represented using 32 bits, so 15 is represented as `0000 0000 0000 0000 0000 0000 0000 1111`, and the complement of that is `1111 1111 1111 1111 1111 1111 1111 0000`

## All 9 Replies

You can use Bitwise unary NOT operator

You can use Bitwise unary NOT operator

Check the Java Language Spec... there no such thing as a "Bitwise unary NOT operator". There is bitwise complement operator, just like the previous poster already said.

ps You can also exclusive OR with a value of all 1 bits.

commented: There's no such thing as "bitwize" :P +13

As james said:

You can use bitwise complement operator to get the complement of any number as like:

``````int a = 15;
int b = ~a;
System.out.println(b);
``````

This code prints complement of 15.

Thanks

commented: Adds no new info, just repeats previous +0

i have do it,but i don't understand why it gives output -16

because 15 in binary=1111 and complement of it=0000

can anyone tell this?

In Java ints are represented using 32 bits, so 15 is represented as `0000 0000 0000 0000 0000 0000 0000 1111`, and the complement of that is `1111 1111 1111 1111 1111 1111 1111 0000`

i know that int is represented in 32 bit pattern,but how it calculate -16....as given output is...

1111 1111 1111 1111 1111 1111 1111 0000

It's a bit difficult to explain why -16 is `1111 1111 1111 1111 1111 1111 1111 0000`, but that is what it is. Perhaps it will help if you know that -1 is `1111 1111 1111 1111 1111 1111 1111 1111` and then you do -1 + -1 to get `1111 1111 1111 1111 1111 1111 1111 1110` which is -2, and you can keep on going until you get to -16. Try it and see.

Also, it might help to read this wikipedia article: http://en.wikipedia.org/wiki/Two%27s_complement

Even though it looks like zero value is in the middle between positive and negative because the opposite of all-zero-bit is all-one-bit, it is not. Because 0 is (somewhat) being included in the positive side, there are 2^31 positive integer (0 up to (2^31)-1) and 2^31 negative integer (-1 up to -2^31) numbers. The first bit of the 32-bit is the sign bit.

Now, when you flip bits, it is not going to be exact as you think -- the flipped bit value of 15 is not -15. Below is value pairs from flipping bits. You can see that the pair is not perfectly matched to its own number but is off by 1.

``````/*
.. 8  7  6  5  4  3  2  1  0 -1 -2 -3 -4 -5 -6 -7 -8 -9 ..
|  |  |  |  |  |  |  |  +--+  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  +--------+  |  |  |  |  |  |  |
|  |  |  |  |  |  +--------------+  |  |  |  |  |  |
|  |  |  |  |  +--------------------+  |  |  |  |  |
|  |  |  |  +--------------------------+  |  |  |  |
|  |  |  +--------------------------------+  |  |  |
|  |  +--------------------------------------+  |  |
|  +--------------------------------------------+  |
+--------------------------------------------------+
*/
``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.