我正在尝试执行一些位移操作并处理 JavaScript 中的二进制数。
这就是我想要做的。用户输入一个值,我用它执行以下操作:
// Square Input and mod with 65536 to keep it below that value
var squaredInput = (inputVal * inputVal) % 65536;
// Figure out how many bits is the squared input number
var bits = Math.floor(Math.log(squaredInput) / Math.log(2)) + 1;
// Convert that number to a 16-bit number using bitshift.
var squaredShifted = squaredInput >>> (16 - bits);
只要数字大于 46,它就可以工作。一旦小于46,它就不起作用。我知道问题出在移位中。现在来自 C 背景,我知道这样做会有所不同,因为所有数字都将以 32 位格式存储(假设它是int
)。JavaScript 是否也这样做(因为它var
没有类型)?
如果是这样,是否可以存储 16 位数字?如果不是,我可以将其视为 32 位并进行所需的计算以假设它是 16 位吗?
注意:我试图在squaredInput
.
另一个注意事项:当打印出 var 时,它只是打印出没有填充的值,所以我无法弄清楚。尝试使用parseInt
and toString
。
谢谢