Mathew Lee

Ranch Hand

Posts: 238

posted 6 years ago

>>What will be output by the following line of code?

System.out.println(010|4);

1) 14

2) 0

3) 6

4) 12

Answer given was 12.

I read above question from link

http://www.jchq.net/certkey/0503certkey.htm

i did not understand how 12 is answer and how octal is related here.

Any ideas, resources,sample code,links, highly appreciated. thanks in advance.

System.out.println(010|4);

1) 14

2) 0

3) 6

4) 12

Answer given was 12.

I read above question from link

http://www.jchq.net/certkey/0503certkey.htm

i did not understand how 12 is answer and how octal is related here.

Any ideas, resources,sample code,links, highly appreciated. thanks in advance.

posted 6 years ago

When you write an integer literal starting with a 0 in Java, such as 010 in the code above, then the number is interpreted as an octal number (base 8) instead of a normal, decimal number (base 10).

010 in octal = 8 in decimal (read about octal if you don't understand why).

The | operator is the bitwise OR operator.

So: 010 | 4 = 8 | 4, in binary this is: 1000 | 0100 = 1100, which is 12 in decimal.

010 in octal = 8 in decimal (read about octal if you don't understand why).

The | operator is the bitwise OR operator.

So: 010 | 4 = 8 | 4, in binary this is: 1000 | 0100 = 1100, which is 12 in decimal.

It is sorta covered in the JavaRanch Style Guide. |