tnblog
首页
视频
资源
登录

20201126计算机基础_位运算

5778人阅读 2020/11/26 11:43 总访问:129453 评论:0 收藏:0 手机
分类: 编程基础

位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。

and和&

and 运算通常用于二进制的取位操作.

相同位的数字都为1, 则为1; 若有一个不为1, 则为0.

举例:

  1. 位运算: 6&11
  2. 0110
  3. 1011
  4. -----
  5. 0010-> 位运算结果为: 2

小技巧

  1. 判断一个整数是奇数还是偶数

    and 1 的结果就是取二进制的最末位 (0/偶数 , 1/奇数)

or和 |

or 运算通常用于二进制特定为的无条件赋值.

相同位只要一个为1 即为1.

举例:

  1. or位运算: 6 or 11
  2. 0110
  3. 1011
  4. ----
  5. 1111-> 位运算结果为: 15

小技巧

  1. 强行把一个数变成最接近的偶数

    or 1 结果: 肯定是个奇数 , 然后-1. 变成偶数

xor 运算 ^

异或的符号是^。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0.

相同位不同则为1, 相同则为0

举例:

  1. 交换律方法可以历史这个^ 运算来实现
  1. 这种是利用加法和减法互为逆运算实现
  2. a:=a + b;
  3. b:=a - b;
  4. a:=a - b;
  5. 实现a,b两个值交换
  6. a:=a xor b;
  7. b:=a xor b;
  8. a:=a xor b;
  9. ... 这里我也看不懂.

not 运算~

not运算的定义是把内存中的0和1全部取反。

shl运算<<

a shl b就表示把a转为二进制后左移b位(在后面添b个0)

计算结果公a<<b =ax2的b次方

shr运算>>

和shl相似,a shr b表示二进制右移b位(去掉末b位),相当于a除以2的b次方(取整)

小技巧: 1. 二分查找

  1. 堆的插入操作
  2. 最大公约数的二进制算法用除以2操作来代替慢得出奇的mod运算,效率可以提高60%。

了解简单一点的位运算, 高级的位运算太复杂了 智商下线

评价

vs2017 对 COM 组件的调用返回了错误 HRESULT E_FAIL

vs2017添加引用报错 对 COM 组件的调用返回了错误 HRESULT E_FAIL 1.以管理员身份打开vs2017开发人员命令指示符 2...

C ServiceStack.Redis操作Redis_基本键值对

Redis的基本数据类型:基本的键值对List集合Set集合有序Set集合Hash表ServiceStack.Redis操作基本键值对:staticvoidMain(s...

C ServiceStack.Redis操作Redis_List

redis的内部实现是使用的链表实现的ServiceStack.Redis操作Redis List的增删改查staticvoidMain(string[]args) { //链接r...

jQuery—为动态添加的元素绑定事件

我们在使用jQuery的时候总会遇到形形色色的问题在jQuery的元素绑定事件中,我通常使用click来绑定单击事件,但是这个只能绑...

及物动词与不及物动词

及物动词与不及物动词从是否需要宾语来区分,实义动词又有及物动词与不及物动词两类。及物动词(vt.):后面必须跟宾语意义...

mvc过滤器

过滤器:过滤器(filter):是基于AOP(面向接口编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑。本质:...

SignalR推送

SignalR推送一、 具体使用1. 建立一个MVC项目2. 安装SignalR步骤:在工具里面找到库程序包管理器,如图所示:然后在控制台输...

.net 微信开发获取access_token使用缓存处理token过期

获取access_token很简单,使用httpclient发起一个请求就可以了,我们使用redis做一下缓存处理publicstaticstringGetToken()...

net core测试

&lt;divclass=&quot;item&quot;&gt; &lt;imgsrc=&quot;~/images/banner2.svg&quot;alt=&quot;VisualStudio&quot;class=&qu...

使用jquery操作元素的css样式(获取、修改等等)

使用jquery操作元素的css样式(获取、修改等等) //1、获取和设置样式 $(&quot;#tow&quot;).attr(&quot;class&quot;)...

C委托_Action和Func (方法可以当作一个参数传递)

大家好,好久不见哦!前段时间因为忘记了帐号了没有更新了哈哈!今天普及一下自己学到的新花样,在C#里面方法居然可以当参...

Xamarin: android.permission.CALL_PHONE 的权限问题

写个电话拨号器,很简单就一个Edittext和一个button,用来输入号码并且点击按钮拨打电话,但是写好以后报的是安全错误,我上...

Fiddler 抓包

今天,由于工作需要,我接触到了一个新鲜事物——Fiddler 抓包。一、Fiddler 抓包工具界面:二、手机抓包使用方法:前提条...

ASP.NET MVC Controller接收ajax post方式发送过来的json对象或数组数据

1、将json数组或者json对象用JSON.stringify()方法序列化成字符串,再将字符串提交到后台。varstuarr=newArray();//创建一...
无论这个世界对你怎样,都请你一如既往的努力、勇敢、充满希望。
排名
25
文章
22
粉丝
5
评论
7
C# string 和String 的区别
剑轩 : 所以区别主要在哪里呢....
markdown 初步学习
剑轩 : 哇哦,真的喜欢你这个个性签名,很不错
pythoic 写法
剑轩 : 新年快乐啊
python拼接字符串八种
剑轩 : 手动点赞+1
python拼接字符串八种
雨雨雨雨雨辰 : 手动点赞
pythoic 写法
瑾语 : 你好
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
心里全是苦的人,只需要一点点的甜就能填满。