编程知识基础C语言位运算符详解

C语言提供了六种位运算符:    &     按位与    |      按位或    ^      按位异或    ~      取反    <<    左移    >>    右移

按位与运算

按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下:    00001001      (9的二进制补码)    &00000101    (5的二进制补码)    00000001       (1的二进制补码)可见9&5=1。按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 ,保留低八位,可作a&255运算(255 的二进制数为0000000011111111)。【例12-1】

main(){

inta=9,b=5,c;

c=a&b;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

按位或运算

按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。例如:9|5可写算式如下:    00001001    |00000101    00001101    (十进制为13)可见9|5=13【例12-2】

main(){

inta=9,b=5,c;

c=a|b;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

按位异或运算

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:    00001001    ^00000101     00001100    (十进制为12)【例12-3】

main(){

inta=9;

a=a^5;

printf("a=%d\n",a);

}

求反运算

求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为:    ~(0000000000001001)结果为:1111111111110110

左移运算

左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如:    a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

右移运算

右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:    设  a=15,    a>>2表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。【例12-4】

main(){

unsigneda,b;

printf("input a number: ");

scanf("%d",&a);

b=a>>5;

b=b&15;

printf("a=%d\tb=%d\n",a,b);

}

请再看一例!【例12-5】

复制纯文本新窗口

main(){

chara='a',b='b';

intp,c,d;

p=a;

p=(p<<8)|b;

d=p&0xff;

c=(p&0xff00)>>8;

printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);

}

(0)

相关推荐

  • 位运算符详解

    位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能.如果要开发高效率程序,位运算符是必不可少的.位运算符用来对二进制位进行操作,包括:按位与(&).按位或(|).按位 ...

  • 电脑处理器知识科普:CPU专业名词术语详解

    小编身边有很多朋友都想DIY自己的电脑,而最重要的部分-电脑处理器却了解不深。电脑处理器简称CPU,它决定了电脑的大部分运行速度和性能。在购买电脑时,CPU也是衡量电脑价格的重要指标。为了方便广大网友 ...

  • Linux shell 比较运算符详解

    运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录, ...

  • JS特殊运算符详解

    Javascript(JS)是一门脚本语言,多用于网页开发中.和其他高级语言一样,JS也有各种的运行符,比如加,减,乘,除.除此之外,还有一些稍为特殊的运算符,下面一起来了解下. 操作方法 01 首先 ...

  • Dev-C++基础新建程序以及运行详解

    Dev-C++是一个十分适合C语言开发的软件,并且Dev-C++的运行以及程序调试,不需要进行复杂的环境变量的设置,Dev-C++是NOI.NOIP等比赛的指定工具,缺点是Debug功能弱.由于原开发 ...

  • 计算机编程之C语言if语句详解

    用if语句可以构成分支结构.它根据给定的条件进行判断,以决定执行某个分支程序段.C语言的if语句有三种基本形式. 语句的三种形式 1) 第一种形式为基本形式:if        if(表达式) 语句其 ...

  • 如何将电脑的光驱位改成机械硬盘位图文详解

    很多比较廉价的电脑,在电脑硬盘方面都是机械硬盘而不会是固态硬盘,因为固态硬盘在目前市场上价格相当的昂贵,所以在买到的心电脑使用一两年后电脑的硬盘会老化,导致很多的数据容易损坏,特别是游戏玩家硬盘也是相 ...

  • 王者荣耀双c位阵容详解

    有一个好的阵容可以很容易走向胜利,双c位阵容就是套路很深的阵容,给大家简单讲解一下. 操作方法 01 双c位阵容,就是有两个adc(射手).一位高伤adc,例如黄忠,百里守约等等.另一个位置要有稳定输 ...

  • js中的运算符详解

    在JS中,要对各种数据进行运算,必须使用相应的运算符.如:+ .-.*./.如何使用运算符来进行操作呢?下面我就带大家来熟悉一下. 操作方法 01 一.算术运算符:+.-.*./.%.++.--. 0 ...