欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言入门之位运算

程序员文章站 2022-04-03 22:35:47
...

慕课网课程笔记。

课程连接:https://www.imooc.com/video/8218

 

 

C语言入门之位运算

位运算的运算速度比乘法快很多。

C语言入门之位运算

& 按位与 
    
    参与运算的两个数,按照对应的二进制数,逐位进行逻辑与运算,
    必须是整型或字符型。必须以补码的方式出现。

int a = 4;      // 00000000 00000000 00000000 00000100
int b = 7;      // 00000000 00000000 00000000 00000111

int c = a&b;    // 00000000 00000000 00000000 00000100


/*
第一个应用,迅速清零,数的对应两位,只有都为1时,得到的才为1,否则为零。所以任意一个数,与0做按位与运算,得到的一定为零。
第二个应用,保留一个数的指定位,,让该数与一个数的低位全为1的数做按位与运算,就得到了该数的低位。
第三个应用,判断奇偶性,a&1,得到的结果为1,是奇数,结果为零,是偶数;

*/

 

C语言入门之位运算

 

int a = 9;        //00000000 00000000 00000000 00001001
int b = 5;        //00000000 00000000 00000000 00000101

只要有1就为1,全零才为零。

int c = a|b;

/*
应用,设置一个数的指定位,只需要让另一个数的该位置为1,即可。
*/

C语言入门之位运算

int a = 9;        //0000 1001
int b = 5;        //0000 0101

相同为零,不同为一。

int c = a^b;      //0000 1100

/*
定位反转,所有的零变成一,一变成零。让他按位异或 一个位全为1 的数。

数值交换,实现两个数的交换,
a = a^b;
b = b^a;
a = a^b;

*/

按位取反,单目运算符,

把一换成零,把零换成一。

 

C语言入门之位运算

左移运算符

int a = 3;    //00000000 00000000 00000000 00000011

a = a<<4;     //00000000 00000000 00000000 00110000

高位丢弃,低位零补齐,

左移n位,将数乘以2的n次方。

int 是有符号位的数,左移可能会产生数的溢出。

应用:运算速度比乘法快,可以用该运算符提高速度。



右移运算符

右移n位。除以2的n次方。

有符号数,根据符号位,决定左边补零还是补一,符号为零补零,符号位为一,根据操作系统不同而不同。