做瞹瞹爱免费网站,网站建设数据表设计 性别,网站设计注册,易观数据app排行符号#xff1a; | ^ ~
作用#xff1a;用于二进制数据的操作 表达式#xff1a; 表达式 运算符 表达式
~表达式或者是变量
优先级#xff1a;~高于 , 高于 高于 | ^
结合性#xff1a;左结合
说明#xff1…符号 | ^ ~
作用用于二进制数据的操作 表达式 表达式 运算符 表达式
~表达式或者是变量
优先级~高于 , 高于 高于 | ^
结合性左结合
说明
char a 10
10 2 -- 0000 1010 -- 0010 1000
: 按位进行左移,把每个位都左移两个位置在低位补0
左移几位就是乘2的几次方
10 2 -- 0000 1010 -- 0000 0010 无符号右移按位进行右移,把每个位都右移两个位置在高位补0
有符号右移按位进行右移,把每个位都右移两个位置在高位补符号位
右移几位就是除2的几次方
每个位都进行与有0出0全1出1
1000 1111 0100 0110
0000 0110
|每个位都进行或有1出1全0出0
1000 1111
| 0100 0110 1100 1111
^每个位都进行或相同出0不同出1
1000 1111
^ 0100 0110 1100 1001
~: 每个位都进行取反
1000 1111
~ 0111 0000
// 比如现在有一个32位的数据你想要把第8位变为1怎么做
原始值xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx | 0x1 8 0000 0000 0000 0000 0000 0001 0000 0000
目标值xxxx xxxx xxxx xxxx xxxx xxx1 xxxx xxxx
在没改变其他值的情况下让第8位一定是1
//比如现在有一个32位的数据你想要把第7和8位变为10怎么做
原始值xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
0x3 7
~ 0000 0000 0000 0000 0000 0001 1000 0000 1111 1111 1111 1111 1111 1110 0111 1111 xxxx xxxx xxxx xxxx xxxx xxx0 0xxx xxxx 0x2 7
| 0000 0000 0000 0000 0000 0001 0000 0000
目标值xxxx xxxx xxxx xxxx xxxx xxx1 0xxx xxxx
//比如现在有一个32位的数据,你想知道32位的数据里第25位是0还是1怎么做
原始值xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
0x1 25
0000 0010 0000 0000 0000 0000 0000 0000 0000 00x0 0000 0000 0000 0000 0000 0000 下表列出了 C# 支持的位运算符。假设变量 A 的值为 60变量 B 的值为 13则
运算符描述实例(位与)有0出0全1出1(AB)将得到12即为0000 1100|位或有1出1全0出0A|B)将得到61,即为0011 1101^(位异或)相同出0不同出1A^B将得到49即为0011 0001~位取反每个位都进行取反~A)将得到-61,即为1100 0011一个有符号二进制数的补码形式 按位进行左移,把每个位都左移两个位置在低位补0 左移几位就是乘2的几次方 A2将得到240即为1111 0000 无符号右移按位进行右移,把每个位都右移两个位置在高位补0 有符号右移按位进行右移,把每个位都右移两个位置在高位补符号位 右移几位就是除2的几次方 A2将得到15即为0000 1111,B2将得到3即为0000 0011
namespace Demo位运算
{internal class Program{static void Main(string[] args){//int a 4;//int c a 3;//Console.WriteLine(c);int a 16;int b a 4;Console.WriteLine(b);}}
}