位运算基础

测试代码在最下方。
1. 与运算符:&
按位与运算是吧左右操作数对应每位进行逻辑与运算。规则是当左右操作数的二进制数的对应位数都为1时结果才为1,否则为0。
即:0&0=0;1&0=0,0&1=0,1&1=1.
2. 或运算符:|
按位或运算是吧左右操作数进行逻辑或运算,规则是只要左右操作数有一个1则结果就为1.
即:0|0=0,1|0=1,0|1=1,1|1=1;
3. 异或运算符:^
按位异或运算是左右操作数对应位相同则为0,不相同为1.一个数被同一个数进行两次异或运算其值不变。
即:1^1=0, 1^0=1, 0^1=1, 0^0=0;
4. 左移运算符:<<
左移运算是将操作数对应的二进制数向左移动指定位数,每移动一次相当于乘2,速度相对较快。
5. 右移运算符:>>
右移运算是将操作数对应的二进制数向右移动指定位数,每移动一次相当于除2,速度相对较快。
6. 按位取反运算符:~
这是单目运算,对操作数进行逻辑非运算,即把0变为1,1变为0.如~10=-11负数在计算机中用补码表示
7. 位运算复合赋值
位运算也像其它运算方法一样支持复合赋值运算,如:a&=10就等价于a=(a&10).其余同理。

#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
void binary(int n)
{
    if(n==0) return;
    binary(n/2);
    cout<<n%2;
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<"binary("<<a<<")=";binary(a);cout<<endl;
    cout<<"binary("<<b<<")=";binary(b);cout<<endl;
    cout<<"a&b="<<(a&b)<<endl;
    cout<<"a|b="<<(a|b)<<endl;
    cout<<"a^b="<<(a^b)<<endl;
    cout<<a<<"<<"<<b<<"="<<(a<<b)<<endl;
    cout<<a<<">>"<<b<<"="<<(a>>b)<<endl;
    cout<<"~"<<a<<"="<<(~a)<<endl;
    return 0;
}

运行结果

输入:
20 3
输出:
binary(20)=10100
binary(3)=11
a&b=0
a|b=23
a^b=23
20<<3=160
20>>3=2
~20=-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值