C语言丨初识位运算符,看这篇文章就够了!

C语言中位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。下面小编就为大家介绍下C语言位运算符的用法。

 

位运算符

C语言提供了六种位运算符:

 

1. 按位与运算

 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

 例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001(1的二进制补码)可见9&5=1。

 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作a&255 运算 ( 255 的二进制数为0000000011111111)。

 main(){

 int a=9,b=5,c;

 c=a&b;

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

 }

2. 按位或运算

 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

 例如:9|5可写算式如下: 00001001|00000101

 00001101 (十进制为13)可见9|5=13

 main(){

 int a=9,b=5,c;

 c=a|b;

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

 }

 

3. 按位异或运算

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

00001001^00000101 00001100 (十进制为12)。

 main(){

 int a=9;

 a=a^15;

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

 }

4. 求反运算

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

5. 左移运算

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

6. 右移运算

 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

 例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。

 main(){

 unsigned a,b;

 printf("input a number: ");

 scanf("%d",&a);

 b=a>>5;

 b=b&15;

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

 }

 请再看一例!

 main(){

 char a='a',b='b';

 int p,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)

相关推荐

  • 【面试常考】位运算介绍与经典例题总结

    原创公众号:bigsai 原创不易,如果有收获请不要吝啬你的赞赞! 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 前言 位运算隐藏在编程语言的角落中,其神秘而又强大,暗藏内力,有些 ...

  • 说说Python中的6种位运算符?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python 位操作符(Bitwise)

    什么是Python中的按位运算符? 按位运算符用于对二进制模式(1和0)执行操作.当您在屏幕上执行2 + 3的整数运算时,计算机将以二进制形式读取它-2表示为10,而3表示为11以二进制格式.因此,您 ...

  • 你真的搞懂了Java中的<<、>>、>>>运算符嘛?

    在搞懂<<.>>.>>>之前,我们需要先了解二进制中的源码.反码.补码... 二进制中的原码.反码.补码 有符号数: 对于有符号数而言,符号的正.负机器是无法 ...

  • C语言基础丨运算符之位运算符(六)

    对于更多紧凑的数据,C 程序可以用独立的位或多个组合在一起的位来存储信息.文件访问许可就是一个常见的应用案例.位运算符允许对一个字节或更大的数据单位中独立的位做处理:可以清除.设定,或者倒置任何位或多 ...

  • 吴参谋说消防丨不了解办公室的隐患都在哪?看这篇文章就够了

    2018年10月8日 星期一 办公室 度过了一个辣么~长的国庆假期,大家开不开心!高不高兴!然而再多的假期也有结束的一天,默默算了一下距离下一次法定节假日还有......好了好了,安心上班吧还是. 现 ...

  • 不知如何选择存储卡?看这篇文章就够了

    好久没和大家聊聊存储卡的选购了,当下的产品情况可以概括为: - 高端存储卡目前以CFexpress Type B型为主.大品牌鲜有新品,而小品牌.低价格产品则如雨后春笋般不断涌现. - 主流存储卡依然 ...

  • 关于睡眠的问题,看这篇文章就够了,别错过!

    "小王,你昨晚没睡好吗?黑眼圈这么重." "最近不知道怎么了,晚上翻来覆去的睡不着." "你是不是睡得太晚了?" "不会啊,差不多 ...

  • 提升工作效率看这篇文章就够了

    老罗个人工作总结.非网络摘抄 着眼于大就是自上而下的看待问题分析问题, 能跳出复杂繁琐事务回归本质,以整个项目来 提出问题,做出预判/假设/规划/方案/评估 着眼于大主要是分析宏观问题和看待问题,时刻 ...

  • “瓷都”|元龙泉窑你肯定不知道该如何鉴定吧!看这篇文章就够了

    关注小编的藏友都知道,上一篇文章小编主要是分享南宋北宋时期龙泉窑的鉴定要点及区别,然而这两天不少藏家给我发了不少的元时期的龙泉窑,向小编请教,鉴于此情况,小编决定再写一篇有关元龙泉窑的鉴定文章,供广大 ...

  • 想全面了解EB-1A杰出人才移民?看这篇文章就够了

    职业移民第一类优先(First Preference Employment Based Immigration,简称EB-1)又称"杰出人才"移民,是美国职业类移民申请中的一类,是 ...

  • 月季管理12个月计划表,每月花事看这篇文章就够。从新手到大神

    今天主要是来给大家说一下月季种植的12个月计划,每个月需要做什么,怎么做都来给大家简洁的说一下,希望大家对月季全年管理有个大概的了解和心理准备. 我们从12月的月季清园以及强剪开始,这样有助于大家形成 ...

  • 相机储存卡怎么选?看这篇文章就够了

    大多数人在买了相机.镜头之后还会买一个很重要的东西-储存卡 储存卡还是很重要的,因为自己有过辛苦拍了一周的照片,因为储存卡出了问题一张照片都没了的经历.今天给大家分享一下储存卡怎么选,希望对大家有帮助 ...

  • 【汇总】物联网入门,看这篇文章就够了!-燚智能物联网学院原创

    导读 物联网,顾名思义,把"物""连成网". 物联网通常分为三个层:感知层.传输层.应用层.和"云.管.端"的概念相同. 感知层:用于数据采 ...