【C语言】移位和位操作符
【摘要】 移位和位操作符
🎓移位操作符
- 二进制左移运算符("<<"),将一个运算对象的各二进制位全部左移若干位 (左边的二进制位丢弃,右边补0)
- 注:高位丢弃,低位补0。
- 二进制右移运算符(">>"),将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。算数右移补的是最高位的数字,逻辑右移补的都是0。注意:我们通常都是采用的是算数右移的方式!
- 注:低位丢弃,高位补0『正数补0、负数补1』
例如 A = 2,A<<1,得到的数字是:4
- 00000000000000000000000000000010
- 00000000000000000000000000000100
例如 A = 2,A>>1,得到的数字是:1
- 00000000000000000000000000000010
- 00000000000000000000000000000001
注意:在按位移动的时候,我们要移动正常的位数,你可不能移动100位那就出大问题
- 如果这里不怎么理解的话可以看看这篇文章:
⚠:对于移位运算符,不要移动负数位,这个是标准当中未定义的。
- 例如:
🎓位操作符
🖊 按位与运算符("&")
双目运算符。其功能是参与运算的两数各对应的二进位相与,只有对应的两个二进位均为 1 时,结果位才为 1,否则为 0。参与运算的数以补码方式出现。
运算规则
例如:9 & 5,代码如下所示:
- 运行结果:number = 1
🖊 按位或运算符("|")
- 双目运算符。其功能是参与运算的两数各对应的二进位相或。只要 对应的二个二进位有一个为 1 时,结果位就为 1。参与运算的两个数均以补码出现。
运算规则
例如:9 & 5,代码如下所示:
- 运行结果: number = 13
🖊 按位异或运算符("^")
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。
相同为0,一个数字异或上了0就相当于本身的那个数字。
运算规则
例如:将 a = 9 和 b = 5 的值进行交换,不能创建变量进行交换!代码如下所示:
从上面代码我们可以知道,按位异或(^),可以不用创建临时变量达到交换两个数字的值。
- 运行结果:交换之前:a = 9 b = 5 换行 a = 5 b = 9
- 注:位操作符都必须是整数!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)