isPositive - вернуть true, если x > 0, в противном случае false
isPositive
true
x > 0
false
Пример: isPositive(-1)
isPositive(-1)
Юридические операции: ! ~ & ^ | + << >>
!
~
&
^
|
+
<<
>>
Макс. Операции: 8
8
Примечание: условные выражения не допускаются.
inline bool isPositive(int32_t x) { return ???; }
Давно не занимался ассемблером, но, насколько я помню, первая цифра в слове представляет отрицательное значение, например, 1000 равно -8, следовательно, если старший бит равен 1, то число отрицательное. Таким образом, ответ !(x>>31)
!(x>>31)
если вы работаете с системой счисления, которая использует MSB в качестве бита обозначения, вы можете сделать:
int IsPositive(int x) { return (((x >> 31) & 1) ^ 1) ^ !x; }