给出任意数字,例如345.678和-345.678,我想要的是将345.678转换为1,将-345.678转换为-1。 基本上,我想将任何数字转换为1或-1,并通过按位运算符保留符号。
虽然我不知道为什么,但是我可以将任何数字转换为-1:
{name of hash map}.clear()
有什么想法吗?
答案 0 :(得分:1)
对于-2147483648和2147483647之间的任何整数,您可以执行以下操作:
(number >> -1) | 1
如果number
为负,则返回-1,如果number
为正,则返回1。
对于零,它将返回1。
它不适用于-1 < number < 0
范围内的小数!但是,它应该适用于其他十进制数字。
答案 1 :(得分:1)
您可以考虑这个问题sign function in C using bit operators only
(x >> 31) & 1
并通过按位或而不是按位AND来调整结果,以得到1
而不是0
和-1
而不是1
const sign = x => (x >> 31) | 1;
console.log(sign(345.678));
console.log(sign(-345.678));