如何将任何数字转换为1或-1,并通过按位运算符保留符号?

时间:2019-07-03 12:52:52

标签: javascript bitwise-operators

给出任意数字,例如345.678和-345.678,我想要的是将345.678转换为1,将-345.678转换为-1。 基本上,我想将任何数字转换为1或-1,并通过按位运算符保留符号。

虽然我不知道为什么,但是我可以将任何数字转换为-1:

{name of hash map}.clear() 

有什么想法吗?

2 个答案:

答案 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));