Could someone explain the logic behind sum of x= 12|3 and y = 15|3 as 30? | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

Could someone explain the logic behind sum of x= 12|3 and y = 15|3 as 30?

I came across this problem in a Python quiz.

4th Mar 2018, 4:55 AM
pankaj pokharkar
pankaj pokharkar - avatar
11 Answers
+ 4
In any programming language that supports the use of binary functions, the | operator is known as a bitwise or operator. What it does is it takes two decimal numbers and first checks both of their binary equivalents (ie. 5 = 101, 11 = 1011). It then compares the two, and for each 1 it encounters that is in either of the two numbers, it takes it and adds it to a new binary number. In other words, it takes whatever 1 it finds in the first decimal number or the second decimal number and adds it to a new set. For example: 13|4 13 = 1101, 4 = 0100 13|4 = 1101 = 13 Here's a lesson on it that explains it better - https://www.sololearn.com/learn/4073/?ref=app In the question you were given, it asks to return the sum of the calculations of 2 pairs of numbers using the bitwise or operator. The first of the 2 is 12|4, and the second is 15|3. Let's break down the calculations for each of the two expressions: 12|3 12 = 1100, 4 = 0011 12|4 = 1111 = 15 15|3 15 = 1111, 3 = 0011 15|3 = 1111 = 15 15 + 15 = 30 Hope this helped!
4th Mar 2018, 5:15 AM
Faisal
Faisal - avatar
+ 4
@Faisal, I have doubts on this, so I tested 12|4 on RealCalc free and got 12 instead of 15, though if I pass 12|3 then I get 15 correctly. The 15|3 however matched (outputs 15), is the fault on the RealCalc app?
4th Mar 2018, 5:48 AM
Ipang
+ 4
@Ipang No RealCalc is not wrong, 12|4 is 1100 | 0100 which is 12
4th Mar 2018, 5:51 AM
Louis
Louis - avatar
+ 4
@Louis, Thanks for confirmation : ) @Faisal, no problem mate, I guess you just made a typo there : )
4th Mar 2018, 6:00 AM
Ipang
+ 3
Well, as the bitwise or operator will always return a number, then really any operation can be used along with it. Furthermore, the number of digits in the binary of the two numbers doesn't really matter as long as you extend the length of the shorter one to match that of the longer one, which can be done by just adding a ton of zeroes at the end. For example, say you had the expression 35|7. 35 can be expressed as 100011, and 7 can be expressed as 111. Just to make the comparison of the two binary numbers easier, it would be a good option to extend 111 to 000111 as it matches the length of 100011. Also, sorry for screwing up the example in my explanation. d: I meant to use the same 2 expressions that you put in the description, but misread it as 12|4. If you want, I could change it to make it more accurate to your initial question?
4th Mar 2018, 6:25 AM
Faisal
Faisal - avatar
+ 2
@Ipang Thanks, I just realised my mistake. I have no idea how I came up with 15 from that d:
4th Mar 2018, 5:54 AM
Faisal
Faisal - avatar
+ 2
Got it. In the reply, Faisal has given an example of 12|4 and 15|3 and the sum is 27 while 12|3 and 15|3 is 30. 1 more question, Can we perform any arithmetic operations for any operator? eg: 967|123 % 579|12? or should both be of same no of digits? 34|5 % 54|4 (in this case 5,4 one digit) Sorry for my technical English
4th Mar 2018, 6:10 AM
pankaj pokharkar
pankaj pokharkar - avatar
+ 1
Thank you so much for the answer. Interest level has been raised exponentially only because of the quick Discussion section. Thanks Faisal and everyone. 😀
4th Mar 2018, 5:30 AM
pankaj pokharkar
pankaj pokharkar - avatar
+ 1
@Faisal: Thanks. Understanding the concept was important and learned 1 more thing,need to be careful while reading the reply( you always check the problem first HaHa😂)
4th Mar 2018, 6:50 AM
pankaj pokharkar
pankaj pokharkar - avatar
+ 1
haa, thanks for asking this question. because after you asked it i referenced the lesson on bitwise operators and now i fully understand them😁 also from the answers
4th Mar 2018, 8:46 AM
Matthew Dhlamini
Matthew Dhlamini - avatar