按位运算符&、|、^、~、<<、>>

简介: 按位运算符都是对二进制进行计算

按位运算符都是对二进制进行计算


1.按位与运算符 &(类似逻辑运算符&&):只有对应的两个二进位均为1时,结果才为1,否则为0.


比如11&25 = 9

01011 : 11

11001 : 25


01001 :9


2.按位或运算符 | (类似逻辑运算符||):只要对应的两个二进位有一个为1时,结果位就为1,否则为0.


比如11 | 25 = 27

01011 : 11

11001 : 25


11011 : 27


3.按位异或 ^:当对应的二进位相异(不相同)时,结果为1,否则为0.


比如11 ^25 = 18

01011 : 11

11001 : 25


10010 : 18


规律:相同数值相 ^ 的结果是0,比如6 ^ 6 = 0.


任何数值跟0进行 ^ ,结果还是原来的数值.9 ^ 0=9


多个整数相^的结果跟顺序无关,比如5 ^ 6 ^ 7 = 5 ^ 7 ^ 6.


因此得出结论:a ^ b ^ a = b ,a ^ a=0在0 ^ b = b.


4.按位取反 ~:对整数的各二进位进行取反,0变1,1变0


比如9,~9取反为-10


八个字节

0000 0000 0000 0000 0000 0000 0000 1001


取反

1111 1111 1111 1111 1111 1111 1111 0110


求负数:再取反+1

1000 0000 0000 0000 0000 0000 0000 1001 +1 等于 1000 0000 0000 0000 0000 0000 0000 1010(-10)


5.按位左移运算符 <<:把整数a的各二进位全部左移n位,离位抛弃,低位补0.左移n位其实就是乘以2的n次方。由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出去的结果值可能会改变正负性。a*2的n次方


比如9 << 1

0000 0000 0000 0000 0000 0000 0000 1001 :9

八个字节向左挪1位,高位抛弃低位补0

000 0000 0000 0000 0000 0000 0000 10010 :18


6.按位右移运算符 >>:把整数a的各二进位全部右移n位。保持符号位不变。右移n位其实就是除以2的n次方


为正数时,符号位为0,最高位补0.


为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。


比如 9 >> 1

0000 0000 0000 0000 0000 0000 0000 1001 :9

八个字节向左挪1位,高位抛弃低位补0

00000 0000 0000 0000 0000 0000 0000 100 :4


相关文章
|
7月前
|
C语言
基本的算术运算符
基本的算术运算符
74 1
|
29天前
算术运算符
【11月更文挑战第24天】
23 4
|
7月前
|
C++
C++程序中的算术运算符
C++程序中的算术运算符
78 2
|
5月前
|
存储 算法 安全
day10:算术运算符
【7月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
33 3
|
6月前
|
Python
位运算符
【6月更文挑战第28天】位运算符。
37 1
|
6月前
|
存储 编译器 C++
C++中的位运算符
C++中的位运算符
38 0
|
7月前
|
编译器 C++
c++算术运算符
c++算术运算符
39 0
|
7月前
|
存储
位运算符和位操作符
位运算符和位操作符
32 0
深入理解算数运算符
深入理解算数运算符
55 0