JavaScript32位整型无符号操作示例
操作 示例 符号 整型
2023-06-13 09:15:13 时间
在JavaScript中,所有整数字变量默认都是有符号整数,这意味着什么呢?
有符号整数使用31位表示整数的数值,用第32位表示整数的符号,0表示正数,1表示负数。
数值范围从-2^31-2^31-1即-2147483648到2147483647。
JavaScript进行位操作时,是采用32位有符号整型,这意味着其转换的结果也是32位有符号整型。有些时候,我们进行移位会出现意想不到的结果,以下是C语言与JS的对比。
C语言
复制代码代码如下:
有符号整数使用31位表示整数的数值,用第32位表示整数的符号,0表示正数,1表示负数。
数值范围从-2^31-2^31-1即-2147483648到2147483647。
JavaScript进行位操作时,是采用32位有符号整型,这意味着其转换的结果也是32位有符号整型。有些时候,我们进行移位会出现意想不到的结果,以下是C语言与JS的对比。
C语言
unsignedinta=3774191835u;
unsignedintb=a>>2;
/*b==943547958*/
JavaScript
vara=3774191835;
varb=a>>2;
/*b==-130193866*/
可以看到,JavaScript进行位运算时,是采用的有符号整型,故我们得到了不一样的结果。怎么解决呢?
我们可以把JavaScript中的有符号数,转换成无符号数。只需要进行>>>0移位操作就好了。
最好不要使用>>,推荐使用>>>因为最左边一位会被解析成符号位,当数字溢出时,会被解析成负数。
相关文章
- 【说站】Python测试前置操作的方法
- DataGrip激活码-操作。DataGrip-2022
- 【约束布局】ConstraintLayout 屏障 Barrier 约束 ( 简介 | 屏障适用场景 | 位置说明 | 相关属性 | 可视化操作 | 代码示例 | 总结 )
- 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )
- 【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质示例 | PCM 音频信号处理 | 使用 matlab 进行频移操作 )
- MongoDB简单操作示例【连接、增删改查等】
- pgsql添加自增序列、设置表某个字段自增操作
- Java 对Oracle Clob(大字符串)格式的操作增改查详解数据库
- Oracle如何实现归档操作?(oracle怎么归档)
- Oracle查看授权表:简洁操作指南(oracle查看授权表)
- 在Linux中实现通达OA的简易操作(通达oalinux版)
- 利用PHP操作Redis变得更简单(php中redis的使用)
- 学习Linux:实际操作示例分享(linux操作实例)
- MySQL中求余数的简易操作(mysql余数)
- 新手快速入门CMD 与 MySQL 主键操作(cmd mysql 主键)
- 必备技能清理Redis缓存的指令操作(清理redis缓存指令)
- 操作简单,通过Shell快速安装Redis服务(shell安装redis)
- Oracle4000 对操作的限制(oracle4000限制)
- php操作excel文件的方法小结
- js操作label给label赋值及取label的值示例
- 应用程序操作NorFlash示例代码分享(norflash接口使用方法)
- Repeater控件实现编辑、更新、删除等操作示例代码
- apacheant进行zip解压缩操作示例分享
- java使用jdbc操作数据库示例分享
- python操作数据库之sqlite3打开数据库、删除、修改示例
- java使用pdfbox操作pdf文件示例
- java文件操作之java写文件简单示例
- js简单的表格添加行和删除行操作示例
- python操作xml文件示例
- ExtGridPanel加载完数据后进行操作示例代码