代码源算法课程笔记(持续更新中~~~)

本文介绍了位运算的基本概念,包括按位与(&)用于添加0,按位或(|)用于添加1,异或运算的不同为1,相同为0。位运算涉及将数字转化为二进制并进行逐位计算,如左移(<<)相当于乘以2的幂次,右移(>>)则相当于除以2的幂次。文章还提供了若干位运算的例子,如如何改变和获取特定位的值,以及计算二进制中1的数量的方法。
摘要由CSDN通过智能技术生成

一、位运算

1、&按位与同为1才为1 (用于添加0)

2、| 按位或同为0才为0。(用于添加1)

3、异或不同为1, 相同为0。

4、进行位运算时,系统会自动将数字转化为二进制的形式,再逐位计算。

5、x << k 表示将x转化为二进制后,向左移动k位,并在末尾补个0得到的值。

     等同于x * 2 ^ k;                x >> k 等同于 x // 2 ^ k 

6、位运算只可以对非负整数操作

7、例子:x >> 1 去掉最后一位   == 除以2

                x << 1 在最后加个0  == 乘 2

                (x << 1) | 1  在最后添加1

                x | (1 << (k - 1))  将右数第k位变成0

                x & ~(1 << (k - 1)) 将右数第k位变为1

                x >> k & 1  获取第k位的值

                计算二进制有几个1:

                int x , c = 0;

                for( ; x; c ++){x = x & (x - 1)}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值