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

尽管我不知道为什么,但是我可以将任何数字转换为-1,如下所示:

345.678 | -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));

关于javascript - 如何将任何数字转换为1或-1,并通过按位运算符保留符号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56870624/

10-10 00:02