C++提供了位运算操作符,使程序可以直接对内存进行操作。C++的这个特色大大提高了C++程序的执行能力。例如使用位操作运算可以将一个存储单位中的各个二进制位左移或右移一位,也可以将一个存储单位中所有的二进制位取反,这些操作多数要比直接进行数值上的运算要高效的多。

学习位运算之前,我们先来了解几个概念:

字节:字节是数据存储和数值计算的基本单位,也是从内存读取数据和写入数据的最小单位,单位是byte

位:在操作系统中,字节还可以划分为更小的单位——位。一个字节由8个位组成,每个位的值为0或1,单位bit

取反(~):即将1变成0,0变成1,也就是说:

~1=0;

~0=1;

取反就是将一个数的二进制码的补码取反,正数的补码是本身,负数的是按位取反加1.

且运算(&):或者叫与运算,基本的位运算符之一。形式为“数值1 & 数值2”,比方说:

1&0=0;

或运算(|):基本的位运算符之一,形式为“数值1|数值2”,比方说:

1|0=1;

移位运算:包括左移运算(<<)右移运算(>>),形式为“数值1<<数值2”(>>同理)表示数值1的全部二进制位向左(右)移数值2位

取反训练:

#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
cout<<hex<<a<<" "<<~a<<endl;
return 0;
}

移位操作训练:

由于二进制各位之间的关系恰位两倍,左移一位其实可以起到了乘以2的作用,右移一位则可以起到除以2的作用

#include<iostream>
using namespace std;
int main(){
int a;
a=5;
a=a<<2;
cout<<a<<endl;
return 0;
}

位运算【C++学习(计蒜客)】的更多相关文章

  1. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  2. 计蒜客:Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

  3. 计蒜客 31434 - 广场车神 - [DP+前缀和]

    题目链接:https://nanti.jisuanke.com/t/31434 小 D 是一位著名的车手,他热衷于在广场上飙车.每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛. 小 D 所 ...

  4. 计蒜客 A1607 UVALive 8512 [ACM-ICPC 2017 Asia Xi'an]XOR

    ICPC官网题面假的,要下载PDF,点了提交还找不到结果在哪看(我没找到),用VJ交还直接return 0;也能AC 计蒜客题面 这个好 Time limit 3000 ms OS Linux 题目来 ...

  5. 2019计蒜客信息学提高组赛前膜你赛 #2(TooYoung,TooSimple,Sometimes Naive

    计蒜客\(2019CSP\)比赛第二场 巧妙爆零这场比赛(我连背包都不会了\(QWQ\) \(T1\) \(Too\) \(Young\) 大学选课真的是一件很苦恼的事呢! \(Marco\):&qu ...

  6. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  7. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  8. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  9. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

随机推荐

  1. Android开发之入口Activity

    Android开发之入口Activity Adnroid App是怎样确定入口Activity的? 难道就由于class的类名叫MainActivity,布局文件叫activity_main.xml? ...

  2. push代码到github时,每次都要输入用户名和密码的问题

    问题原由 我在Github上 建立了一个小项目TauStreamingServer,可是在每次push代码 的时候,都要求输入用户名和密码,很是麻烦. 如何才能避免每次都输入用户名和密码呢? 解决办法 ...

  3. eclipse中progress一直在刷新问题处理

  4. HashMap源代码学习笔记

        HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是由于它是通过计算散列码来决定存储的位置. HashMap中主要是通过key的hashCode来计算hash值的 ...

  5. 使网页适应UIWebView的宽度

    比較简单的做法是:在- (void)webViewDidFinishLoad:这种方法中,改动JavaScript的值: //UIWebViewDelegate - (void)webViewDidF ...

  6. C++中extern “C”含义深层探索(在原作的基础上修改) .

    1. 引言 C++ 语言的创建初衷是“a better C” ,但是这并不意味着C++ 中类似C 语言的全局变量和函数所采用的编译和连接方式与C 语言完全相同.作为一种欲与C 兼容的语言,C++ 保留 ...

  7. 初识Restful(学习笔记)

    什么是Restful? REST -- Resource Representational State Transfer(表现层状态转移) 本质上是一种优雅的URL表达方式,描述资源的状态和状态的转移 ...

  8. Robots协议应用与写法研究

  9. Continuous integration: The answer to life, the universe, and everything?

    Continuous integration is not always the right answer. Here's why. https://techbeacon.com/continuous ...

  10. ios实现倒计时的两种方法

    方法1:使用NSTimer来实现 主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMeth ...