首页 > 其他分享 >位运算及其应用

位运算及其应用

时间:2024-10-20 23:22:00浏览次数:9  
标签:右移 运算 及其 左移 取反 运算符 按位 应用

本文主要介绍C语言中的位运算及其应用。

一、位运算符

C语言提供6种位运算,它们是“按位取反(~)”、“左移(<<)”、“右移(>>)”、“按位与(&)”、“按位异或(^)”、“按位或(|)”。总结如下表所示,

位运算符
运算符含义优先级
~按位取反1(高)
<<左移2
>>右移2
&按位与3
^按位异或4
|按位或5(低)

 注意:以上6种位运算符中,只有“按位取反(~)”运算符为单目运动算符,其余均为双目运算符。各双目运算符与赋值运算符相结合可以组成扩展的赋值运算符,如下表所示,

扩展的赋值运算符
扩展运算符表达式等价表达式
<<=a <<=2a=a<<2
>>=b >>=2b=b>>2
&=a &=ba=a&b
^=a ^=ba=a^b
|=a |=ba=a|b

二、位运算符的运算功能

1、“按位取反(~)”运算

单目运算符,把运算对象的内容按位取反。

2、“左移(<<)”运算

双目运算符,运算符的左边是位移对象,右边是整型表达式,代表左移的位数。

左移时,右端(低位)补0;左端(高位)移出的部分舍弃。

左移时,如果左端移出的部分不包含有效二进制数1,则每左移一位,相当于移位对象乘2,因此可以利用左移这一特性代替乘法运算。如果左端移出的部分包含有效二进制数1,则该特性不再适用。

3、“右移(>>)”运算

右移运算符的使用方法与左移运算符一样,只是方向不同。

右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:

①对于无符号整数和正整数,高位补0;

②对于负整数,高位补1。

右移时,如果右端移出的部分不包含有效二进制数1,则每右移一位,相当于移位对象除2 。

4、“按位与(&)”运算

把参加运算的两个运算数按对应的二进制位分别进行“与”运算,当两个相应的位都为1时,该位的结果为1;否则为0。

“按位与”运算具有如下特征:任何位上的二进制数,只要和0“与”,该位即被屏蔽(清零);和1“与”,该位保留原值不变。

该特征可用于清除(保留)特定位

5、“按位异或(^)”运算

参与运算的两个运算数相对应的二进制位上,若数相同,则该位的结果为0;若数不同,则改位的结果为1。

利用该运算可以使一个数中某些指定位翻转而另一些位保持不变

6、“按位或(|)”运算

只要两个相应的二进制位中有一个为1,该位的运算结果即为1;只有当两个相应位的数都为0时,该位的运算结果才为0。

该运算可以使一个数中的指定位置1,其余位不变。

标签:右移,运算,及其,左移,取反,运算符,按位,应用
From: https://blog.csdn.net/aElect/article/details/143036683

相关文章

  • STM32外设应用技术博文:基于UART的温度传感器数据采集
    ✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。......
  • 第六章元素应用 CSS
    6.1使用CSS设置字体样式6.1.1.字体类型语法:font-fanily:字体名称;参数:字体名称按优先顺序排列,以逗号隔开。如果字体名称包含空格,则应用引号括起。说明:用font-family属性可控制显示字体。不同的操作系统,其字体名是不同的。对于Windows系统,其字体名就如Word中的“字体”......
  • 基本数据类型及其使用
    一.整型数据类型  //java的整型数据类型默认为int,1字节=8比特//在申明long类型变量是要在后面跟L或l的后缀 二.表数范围的记忆技巧:①.指数n=(字节数×比特)/2 ②.左不减右减一左边公式=-(2**n)右边公式=2**n-1 三.浮点型数据(由于float的精度差,一般不用) //在申明floa......
  • 变量定义及其的使用
    一.变量:程序中最为基本的单元  作用:能存储同一类型内不断变化的数据  要素:数据类型、变量名、存储的值 二.申明变量格式1:数据类型变量名=变量值;    例如:intnum=19格式2:数据类型变量名;       变量名=变量值;    例如:intage......
  • java中10个常见的异常及其解决方案
    NullPointerException:空指针异常原因:尝试访问一个空对象的成员或方法。解决方案:确保在使用对象之前它们已经被正确初始化了。可以使用Objects.requireNonNull()来检查关键对象是否为空。ArrayIndexOutOfBoundsException:数组下标越界异常原因:试图访问数组的一个不存在的索......
  • 《Linux从小白到高手》综合应用篇:深入理解Linux常用关键内核参数及其调优
    1.题记有关Linux关键内核参数的调整,我前面的调优文章其实就有涉及到,只是比较零散,本篇集中深入介绍Linux常用关键内核参数及其调优,Linux调优80%以上都涉及到内核的这些参数的调整。2.文件系统相关参数fs.file-max参数说明::控制系统中打开文件描述符的数量上限。默认值......
  • 软考论文论湖仓一体架构及其应用
    一、论文论据数据仓库是从各种外部数据源、各种内部应用程序中定期提取数据的大型存储库。数据湖是一个以原始格式存储数据的平台,不需要定义数据按原样存储数据,而无需事先对数据进行结构化处理或者定义数据模式,数据湖仓虽然适合数据的存储,但由于不支持事务、缺乏一致性/隔离性、......
  • 重载运算符、析构函数
    重载运算符、析构函数1.重载运算符2个对象进行==比较,重载==运算符说白了,就是,写一个成员函数,这个成员函数名"operator==",这个成员函数体里边写一些比较逻辑//定义Time&operator=(constTime&tmpobj)//实现Time&Time::operator=(constTime&tmpobj){cout......
  • Python 赋值与运算符和连接符
    a=input("请输入一个数a")b=input("请输入一个数b")a=float(a)          #将数据转换为浮点型b=float(b)          #将数据转换为浮点型c=a+b#定义c=a+bprint("输入的数为c",c)ifa<b:c=belse:c=aprint("......
  • 软考论文之论软件维护方法及其应用
    一、论点论据软件维护,就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。可以选择以下4~5种主要的影响软件维护工作的因素,进行论述影响软件维护工作的主要因素有:1、可理解性:通过阅读源代码和文档,了解软件功能和运行的容易程度。2、可测试性:验证软件程......