C# 位运算详解
2024-10-13 20:30:06
运算符 | 描述 |
---|---|
&(位与) | 当两个二进制操作位都为1时,结果就为1 |
|(位或) | 当两个二进制操作位有1个为1时,结果就为1 |
^(位异或) | 当两个二进制操作位只有1个为1时,结果为1 |
~(位非) | 操作位的每个位都取反(就是0变成1,1变成0) |
<<(左移) | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 |
>>(右移) | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 |
pq实例图
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
如下 :
int x=12,y=10;
int a;
a=x&y; //a=8
下面是计算试子的和加减法一样
二进制的个位,十位,百位,千位,分别对应的是1,2,4,8 二进制每多一位只需要乘2 那个个位置有1 就加上该位置的十进制数 。
上面说&运算时,当两个二进制操作位都为1时,结果就为1
看个位 0&0 =0 十位 0&1=0 百位 1&0=0 千位1&1=1
换下来就是 1000(二进制) =8(十进制) 12&10=8
12|10,12^10 可以试着就算这个值
位非怎么运算呢?
~12 直接位数取反 0变1,1变0 二进制左端1是位负数 在取反上-1
~12=-13;
要获取他12的相反数 二进制表示 也是 取反 但是在结果上加1
左/右移 左移对移玩的位置补0 14<<3 二进制就是 1110>>1110 000
就是 14X2X2X2=112 14<<3=112
右移 切记负数右移是错误的 因为一个负数无论如何除2都不会乘位一个正数 14>>3=1
最新文章
- 修复Telerik reporting 在网页中使用时的样式
- windows 8安装wp8之后鼠标没反应了
- 不修改Xcode项目加载Reveal
- 用struts和hibernate结合MVC层实例
- C#中的延迟加载
- FIFO页面置换算法
- EF多数据库预热
- datetimepicker 初始化只显示年
- Linux的关机与重启命令
- webBrowser中操作网页元素全攻略
- 6最好的之一 HTML5/CSS3 演示(PPT)框架
- LeetCode OJ 78. Subsets
- org.apache.hadoop.security.AccessControlException: Permission denied: user=?, access=WRITE, inode=";/";:hadoop:supergroup:drwxr-xr-x 异常解决
- java第十三次作业
- 【JavaScript for循环实例】
- Activiti6-FormService(学习笔记)重要
- 查看SQL Server的版本及License
- 在Centos7下搭建Git服务器
- c-lodop云打印实现手机打印 JS语句打印
- dojo:如何为表格添加从数据库获得存储的下拉框