0

I am not able to understand why in the following program it is mentioned in my book:
The value of ~a is ANDed with 0x0f (0000 1111) in binary in order to reduce its value to less than 16, so it can be printed by use of the binary array.

class bitLogic
{
	public static void main(String args[])
	{
		String binary[] = { "0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111" };
		int a=3;
		int b=6;
		int c=a | b;
		int d=a & b;
		int e=a ^ b;
		int f=(~a&b) | (a&~b);
		int g=~a& 0x0f;

		System.out.println("           a = "+ binary[a]);		
		System.out.println("           b = "+ binary[b]);
		System.out.println("        a|b = "+ binary[c]);
		System.out.println("        a&b = "+ binary[d]);
		System.out.println("        a^b = "+ binary[e]);
		System.out.println("(~a&b)|(a&~b)= "+ binary[f]);
		System.out.println("          ~a = "+ binary[g]);
	}
}

Could someone please tell me how to we come to know which binary number representations like 0x0f , 0x0f1 , 0x0ff..etc. represent.

3
Contributors
2
Replies
3
Views
9 Years
Discussion Span
Last Post by Phaelax
0

I think these numbers (0x0f , 0x0f1 , 0x0ff) are not binaries, they're hexadecimal.
but to convert binary to hexadecimal you can use table that convert 4 digits binary, like :
0000 -> 0
0001 -> 1
0010 -> 2
0011 -> 3
0100 -> 4
0101 -> 5
0110 -> 6
0111 -> 7
1000 -> 8
1001 -> 9
1010 -> A
1011 -> B
1100 -> C
1101 -> D
1110 -> E
1111 -> F

so, if you found binary like : 1001 1011, just use the table and convert it to 9B.

0

Well, I'm not quite sure about the tilde, but it looks like it's using 0x0f as a mask which basically cancels outs the higher 4 bits of a byte. By canceling out all but the lower 4 bits, the resulting number will range between 0 and 15. With all the variables being integers(4 bytes), I would think the masking hexadecimal would be longer. Or another possibility is I'm completely wrong. I'm not positive on my answer, so careful how you take it.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.