位操作符
来源:互联网 发布:springmvc json转对象 编辑:程序博客网 时间:2024/06/06 01:00
数值在计算机内是二进制存储的。正数以二进制格式存储,没有用到的位用0填充,负数以其绝对值二进制补码格式存储。
对于有符号的整数,32位中前31位表示整数的值,第32位表示符号,0表示整数,1表示负数,这个位叫符号位。有符号整数的第32位是不能访问的。
计算补码:计算这个数的绝对值二进制,取二进制反码,反码再加1。
例:求-18的二进制补码:1)绝对值二进制
0000 0000 0000 0000 0000 0000 0001 0010
2)二进制反码
1111 1111 1111 1111 1111 1111 1110 1101
3)反码加1
1111 1111 1111 1111 1111 1111 1110 1110
1左移
左移用<<表示,左移操作时将数值的所有位向左移指定位数,右侧多出的空位用0补充,但左移不会影响操作数的符号位。
如果2左移5位,结果是64;如果-2左移5位,结果是-64。
2右移
有符号右移
有符号右移用>>表示,将数值的所有位向右移指定位数,但保留符号位,左侧多出的空位由符号位的值来填充。
有符号右移与左移结果相反。64右移5位,结果是2;-64右移5位,结果是-2。
无符号右移
无符号右移用>>>表示,将数值的所有32位向右移。
正数无符号右移的结果和有符号右移相同,64无符号右移5位,结果仍是2。
负数无符号右移操作会把负数的二进制码当成正数的二进制码,负数是以其绝对值的二进制补码存储的无符号右移后结果会非常大。
例:-64无符号右移64的二进制存储
0000 0000 0000 0000 0000 0000 0100 0000
取反
1111 1111 1111 1111 1111 1111 1011 1111
加1后为-64二进制存储
1111 1111 1111 1111 1111 1111 1100 0000
-64>>>5 等于十进制的134217726
0000 0111 1111 1111 1111 1111 1111 1110
0 0
- 位操作符
- java位操作符
- 位运算操作符
- 位操作符介绍
- C#位操作符
- c++(位操作符)
- 简述位操作符
- c++位操作符
- 位操作符
- 位操作符
- 位运算操作符
- 位操作符总结
- 位操作符
- 位操作符
- c#位操作符
- java 位操作符
- 位域操作符
- c++位操作符
- Android ORM 框架之 greenDAO
- 使用Babel和ES7创建JavaScript模块
- loadrunner中如何使用大数据量——如何使用excle 宏
- Data包长度限制
- 小折腾:JavaScript与元素间的抛物线轨迹运动
- 位操作符
- android packages.xml指定应用签名信息检索、编辑脚本
- 最大子矩阵之和
- jsp数据传递到后台为中文乱码的解决方法
- Yii 设置redis缓存
- 组态软件与oracle数据库的连接简介
- 侧滑菜单
- CSS学习(九)——构造颜色、背景和图像
- A - Max Sum Plus Plus——POJ