0

Hi,
I am having problem with the following code.This is on a 32 bit system. The problem statement is:
/* isLess - if x < y then return 1, else return 0
* Example: isLess(4,5) = 1.
* Legal ops: ! ~ & ^ | + << >>
* Max ops: 24
*/

I can't use any loops or - * / !! || < >

My code so far is:

int isLess(int x, int y) {

return (( x + (~y + 1)) >> 31 ) & 1 ;

}


It works for all numbers except for negative numbers:

Test isLess(2147483646[0x7ffffffe],-2[0xfffffffe]) failed.
Gives 1[0x1]. Should be 0[0x0]

I am new to programming and am very green when it comes to the negative numbers!

Any help is appreciated!

3
Contributors
3
Replies
4
Views
12 Years
Discussion Span
Last Post by Tight_Coder_Ex
0

Are you sure it should accept negative numbers? The bitwise operators are tricky when working with signed types.

0

Yes, it is suppose to work with negative numbers too...I'm assuming that is the challenging part. I've had to do 15 of these "puzzles" and this was the last one. I dream 1's and 0's now!

I can't figure out how to get the negative ones to work though.

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.