I have been programming for over an year now. I still don't get why bitwise OR and AND operators are used. They seem to return random numbers.
What mathematical purpose do they have?
Be sure to click 'more' and select 'suggest as answer'!
If you're the thread creator, be sure to click 'more' then 'Verify as Answer'!
I have been programming for over an year now. I still don't get why bitwise OR and AND operators are used. They seem to return random numbers.
What mathematical purpose do they have?
It can seem this way if your looking at the values as decimal or hex
These operations are a binary operation so it works on ones and zeroes
For example the decimal number 15 is 0F in hex or 00001111 in binary
If I and 16 with 4 I will get 4, why well consider the binary value
0000 1111 <-- 16
0000 0100 <-- 4
Only where the ones align will you have a 1 left in the answer, therefor you get 00000100 or 4
It can appear random if your looking at the number in decimal
Now the opersit is more confusing
Given
01010011 <-- 83 anded with
10010101 <-- 149 results in
00010001 <-- 17
Looking at this in decimal would be really confusing but looking at it in binary it makes perfect sense. So again only where the ones match are you left with a one. With the OR operator it wirks that you get a one where ever there is a one on either or both sides (But no carry)
So
10101010 OR
01010101 =
11111111
Then again
11110000 OR
00000000 =
11110000
Hope that clarifies the issue
Also the binary notation has values like this
128, 64, 32, 16, 8, 4, 2, 1 and to get to the decimal just add up where each bit has a one aligned with it
It can seem this way if your looking at the values as decimal or hex
These operations are a binary operation so it works on ones and zeroes
For example the decimal number 15 is 0F in hex or 00001111 in binary
If I and 16 with 4 I will get 4, why well consider the binary value
0000 1111 <-- 16
0000 0100 <-- 4
Only where the ones align will you have a 1 left in the answer, therefor you get 00000100 or 4
It can appear random if your looking at the number in decimal
Now the opersit is more confusing
Given
01010011 <-- 83 anded with
10010101 <-- 149 results in
00010001 <-- 17
Looking at this in decimal would be really confusing but looking at it in binary it makes perfect sense. So again only where the ones match are you left with a one. With the OR operator it wirks that you get a one where ever there is a one on either or both sides (But no carry)
So
10101010 OR
01010101 =
11111111
Then again
11110000 OR
00000000 =
11110000
Hope that clarifies the issue
Also the binary notation has values like this
128, 64, 32, 16, 8, 4, 2, 1 and to get to the decimal just add up where each bit has a one aligned with it