位运算基础

首先谈谈位运算与逻辑运算的区别:尽管它们有一些相似之处,但针对的对象是不同的,位运算是对二进制数之间的运算,而逻辑运算是bool型之间的运算。下面我们开始讲位运算:

1、与运算:

只有同为1才取1,逻辑运算则是同true才true;

Pascal:and;

C++:&(逻辑运算则是&&);

举例:

3&5=011&101=001=1;

因此,判断某个二进制数某一位是否为1,只需将这个数与当且仅当对应位为1的一个二进制数进行与运算,为0则0,否则为1;

2、或运算

有1则取1,逻辑运算对应有true则true;

Pascal:or;

C++:|(逻辑运算则是||);

举例:

3|5=011|101=111=7;

因此,把某个二进制数某一位改成1,只需将这个数与当且仅当对应位为1的一个二进制数进行或运算;

3、异或运算:

相同取0,相反取1;

Pascal:xor;

C++:^;

举例:

3^5=011^101=110=6;

因此,异或可以比较两数是否相同或对一个数某些位进行翻转。

4、移位:

C++:

k<<i表示将k左移i位,k>>i表示将k右移i位;

如:1<<2=001<<2=100=4;100>>2=1;

4可以配合1、2,快速修改判断二进制的某一位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值