The first behaviour you list is mathematically called the signum operation. If you are allowed to use numpy, i’d simply do:
import numpy
sign = numpy.sign(x)
With regard to your 2nd question, that’s quite easy.
Simply use:
int(bool(x))
Edit:
With some tinkering i found a solution for your first question, too:
negsign = int(int(num) >> 31)
possign = int(num > 0)
sign = negsign + possign
Note that i did not thoroughly test this for special cases like -0
.
6
solved How to reduce any number not equal to 0 to 1 and any number equal to 0 kept at 0 in Python? [closed]