Question: Need help understanding the answer below /* * ezThreeFourths - multiplies by 3/4 rounding toward 0, * Should exactly duplicate effect of C expression (x*3/4),
Need help understanding the answer below
| /* |
| * ezThreeFourths - multiplies by 3/4 rounding toward 0, |
| * Should exactly duplicate effect of C expression (x*3/4), |
| * including overflow behavior. |
| * Examples: ezThreeFourths(11) = 8 |
| * ezThreeFourths(-9) = -6 |
| * ezThreeFourths(1073741824) = -268435456 (overflow) |
| * Legal ops: ! ~ & ^ | + << >> |
| * Max ops: 12 |
| * Rating: 3 |
| */ |
| int ezThreeFourths(int x) { |
| int mask; |
| int whatSign; |
| int bias; |
| int divByFour; |
| x = ((x << 1) +x); //multiply by 3 and then use pwrof2 |
| mask = (1 << 2) + ~0; |
| whatSign = x >> 31; |
| bias = mask&whatSign; |
| divByFour = ((x + bias) >> 2); |
| return divByFour; |
}
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
