当前位置:网站首页>位算符详解 按位与、或、异或、取反、左移、右移
位算符详解 按位与、或、异或、取反、左移、右移
2022-08-10 18:12:00 【51CTO】
1.按位与(&)
int a = 3, b = -2 , c = a & b ;
2.按位或(|)
int a = 3, b = -2 ,
3.按位异或(^)
int a = 3, b = -2 , c = a ^ b ;
4.按位取反(~)
int a=18, b = ~ a;
5.左移(<<)
<< :左移 左边最高位丢弃,右边补齐0
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方
用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。
左移表达式的的位 result = expression1 << expression2
参数 result,任何变量。
expression1,任何表达式,需要移位的数字。
expression2,任何表达式,移位的次数。
用来将一个数的各二进制位全部左移若干位。例如:
将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60(为简单起见,用8位二进制数表示十进制数15,如果用左移运算符16位二进制数表示,结果是一样的)。
高位左移后溢出,舍弃。
左移一位相当于该数乘以2,左移2位相当于该数乘以2^2=4。上面举的例子15<< 2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。
例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64,即二进制数01000000时,左移一位时溢出的de是0。而左移2位时,溢出的高位中包含1,则不符合上述结论。
由下表可以看出,若a的值为64,在左移一位后相当于乘2,左移2位后,值等于256。
简单介绍一种方便计算的方法:
8 << 1的值为8*2=16;
8 << 2的值为8*(2^2)=32;
8 << n的值为8*(2^n)。
数学意义:
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
6.右移(>>)
>> :右移 最高位是0,左边补齐0;最高为是1,左边补齐1
右移一位相当于除2,右移n位相当于除以2的n次方。
右移有两种:
1、逻辑右移:丢弃最低位,向右移位,左边空出来的位置补0
2、算术右移:丢弃最低位,向右移位,左边空出来的位置补原来的符号位(即补最高位)
边栏推荐
猜你喜欢
组合模式
Toronto Research Chemicals霉菌毒素分析丨伏马菌素B2
Go 语言快速入门指南:第四篇 与数据为舞之数组
接口测试进阶接口脚本使用—apipost(预/后执行脚本)
Live Review|How to build an enterprise-level cloud management platform in the multi-cloud era?(with the download of the construction guide)
「企业架构」什么是Zachman框架?
Interface test advanced interface script using -apipost (pre/post execution script)
Kong自定义插件初体验
oracle11g体系结构
【快应用】实现自定义导航栏组件
随机推荐
开发模式对测试的影响
【FAQ】【Push Kit】 华为怎么设置角标
img转base64
网络可观测性:让您的网络监控更上一层楼|TechGenix
FFmpeg 从mp4上提取H264的nalu
Scala中使用 Jackson API 进行JSON序列化和反序列化
搭载2.8K 120Hz OLED华硕好屏 无畏Pro15 2022锐龙版屏开得胜
基于GAMS的电力系统优化分析
类型和id对应的两个数组
去除富文本标签样式
期货开户前要第一时间确认手续费
postgis空间数据导入及可视化
智能安防产品公司及产品
Toronto Research Chemicals农药检测丨甲硫威
c语言进阶篇:柔性数组
Toronto Research Chemicals萜烯分析丨反式植物醇
Scala中使用 Jackson API 进行JSON序列化和反序列化
面试题 04.12. 求和路径-dfs+辅助数组法
MySql主要性能指标说明
从Delta 2.0开始聊聊我们需要怎样的数据湖