|
|
@ -259,7 +259,7 @@ int isLessOrEqual(int x, int y) { |
|
|
|
int absy = y & sign1; |
|
|
|
int diff = absy + (~absx) + 1; |
|
|
|
int signdiff = diff >> 31; |
|
|
|
int res = !!isnegpos | (!isnegpos & !signdiff & !isposneg); |
|
|
|
int res = !(!isnegpos) | (!isnegpos & !signdiff & !isposneg); |
|
|
|
return res; |
|
|
|
} |
|
|
|
//4 |
|
|
@ -272,7 +272,14 @@ int isLessOrEqual(int x, int y) { |
|
|
|
* Rating: 4 |
|
|
|
*/ |
|
|
|
int logicalNeg(int x) { |
|
|
|
return 2; |
|
|
|
int sign = (x ^ (~x + 1)) >> 31; |
|
|
|
int one = 1; |
|
|
|
int singlesign = sign & one; |
|
|
|
int intmin = 1 << 31; |
|
|
|
int isnotmin = (~x) >> 31; // if x is 00000, get 1111 and if x is 1000 get 00000 |
|
|
|
int notmin = isnotmin & one; |
|
|
|
int res = singlesign ^ one & notmin; |
|
|
|
return res; |
|
|
|
} |
|
|
|
/* howManyBits - return the minimum number of bits required to represent x in |
|
|
|
* two's complement |
|
|
|