gpt4 book ai didi

javascript - Javascript 中的无符号整数

转载 作者:IT王子 更新时间:2023-10-29 03:10:48 24 4
gpt4 key购买 nike

我正在处理一个处理 IP 地址信息的页面,但它对整数已签名这一事实感到窒息。我正在使用按位运算符来加速它,但是第 64 位(有符号/无符号标志)搞砸了。

有什么方法可以强制在 Javascript 中取消对数字的签名?它似乎工作正常,直到子网大于 30 或小于 2。

试试这个:

<html>
<body>

<script type='text/javascript'>
document.write( (1 << 30) +"<br/>");
document.write( (1 << 31) +"<br/>");
document.write( (1 << 32) +"<br/>");
</script>

</body>
</html>

结果:

1073741824 -2147483648 1

最佳答案

document.write( (1 << 31) +"<br/>");

<<运算符被定义为处理带符号的 32 位整数(从 double float 的 native 数字存储转换而来)。所以1<<31结果必须为负数。

唯一使用无符号 32 位整数的 JavaScript 运算符是 >>> .您可以利用它来将您一直在使用其他按位运算符处理的有符号整数转换为无符号整数:

document.write(( (1<<31)>>>0 )+'<br />');

同时:

document.write( (1 << 32) +"<br/>");

将不起作用,因为所有移位操作仅使用移位的最低 5 位(在 JavaScript 和其他类似 C 的语言中也是如此)。 <<32等于<<0 , IE。没有变化。

关于javascript - Javascript 中的无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1908492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com