前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >按位运算符

按位运算符

原创
作者头像
Alan_1
发布2023-04-30 12:45:36
4420
发布2023-04-30 12:45:36
举报
文章被收录于专栏:Alan的blog
代码语言:c++
复制
<<(左移)、>>(右移)、~(取反)、&(与)、|(或)、^(异或)

  1. 左移<<:
  • 语法:
代码语言:txt
复制
 ```c++
代码语言:txt
复制
 value<<shift
代码语言:txt
复制
 //例子
代码语言:txt
复制
     13<<3		//13左移三位,即13*2^3=104
代码语言:txt
复制
 ```
  • 错误示例:
代码语言:txt
复制
 ```c++
代码语言:txt
复制
 int x=20;
代码语言:txt
复制
 int y=x<<3;		//不会修改x的值
代码语言:txt
复制
 //修改x值得用
代码语言:txt
复制
 x<<=3;		//等价于:x=x<<3;
代码语言:txt
复制
 ```
  1. 右移>>:

同左移,只是符号不同;

代码语言:javascript
复制
   value>>shift
   //例子
代码语言:txt
复制
   //13右移三位,空白部分用0填充,超过边界的位将被删除,即13/2^3=1(退位取整)
代码语言:txt
复制
   //13转换位二进制:00001101,右移3位后:00000001,即1
代码语言:txt
复制
   13>>3		

示例:

代码语言:javascript
复制
   int q=43;
   q>>=2;		//即43/2^2=10
  1. 按位取反~:
  • 将每个0转换为1;
  • 将每个1转换为0;
代码语言:javascript
复制
   ~a;
  1. 与&:
  • 都为1则为1;
  • 否则为0;
代码语言:javascript
复制
   a&=b;		//a=a&b;
  1. 按位或|:
  • 有1则为1;
  • 没有1则为0;
代码语言:javascript
复制
   a|=b;		//a=a|b;
  1. 异或^:
  • 相同为0;
  • 不同为1;
代码语言:javascript
复制
   a^=b;		//a=a^b;

按位运算符的替代表示:

标准表示

替代表示

&

bitand

&=

and_eq

|

bitor

|=

or_eq

~

compl

^

xor

^=

xor_eq

代码语言:c++
复制
a^=b;		//a=a xor b;
b=~a&b;		//b=compl a bitand b;
常用的按位运算符技术:
  • lottabits表示一个值;
  • bit表示特定位的值,第n位的值为2^n;即术语位(bit)表示2的幂;
  1. 打开位: 将bit位从0或1修改为1
代码语言:javascript
复制
   lottabits=lottabits|bit;
   lottabits|=bit;
   //解释:
   	//假设:lottabits=01100101;bit=3=2^3即bit=1000;
   //则:lottabits|bit=  01100101		  OR 
   //                   00001000
   //=                  01101101

//将第3位从0变为1

  1. 切换位:
  • 将打开的bit位关闭,即1变0;
  • 将关闭的bit位打开,即0变1;
代码语言:javascript
复制
   lottabits^=bit;		//lottabits=lottabits^bit;
  1. 关闭位:
  • 关闭相应的位:
代码语言:javascript
复制
   lottabits=lottabits & ~bit;
   lottabits&=~bit;
  1. 测试位的值:
  • 确定bit位是否为1
代码语言:javascript
复制
   //1.
   	if(lottabits==bit)	//大多数情况下不管用
   //2.
   	if(lottabits & bit==bit)
   //3.
代码语言:txt
复制
   if(lottabits & bit)		//2的简化版

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 按位运算符的替代表示:
  • 常用的按位运算符技术:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档