C语言位运算符和一些运用

本文详细介绍了C语言中的位运算符,包括按位取反、按位与、按位或、按位异或、按位左移和按位右移,并通过实例解析了如何利用位运算符来确定操作数的最低位、计算1的个数、无临时变量交换两个数以及提取奇偶位等应用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

C语言中提供了6中基本位运算符。位运算是对每个二进制位分别进行操作;位运算符的操作对象只能是整型或字符型数据,不能为实数型数据(C语言中,实数型数据只能用十进制表示,当然不能进行位运算)。


一、位运算符表格

运算符 名称 实例 结果
~ 换位取反 ~1010 0101
& 换位与 0110&1010 0010
| 按位或 0110|1010 1110
^ 按位异或 0110^1010 1100
<< 按位左移 01101010<<2 10101000
>> 按位右移 01101010>>2 00011010

二、位运算符详解

1.按位取反 ~
规则:将操作对象的二进制补码中的每一位安危取反,即1变0,0变1

举例:

             ~101010011
          ——————————————————
              010101100

—————————————————————————————————
2.按位与 &
规则:两个操作数二进制补码的每一个对应位都为1时结果为1,其他情况时为0。(即只要有一个为0结果就为0)
举例:

              11000011
             &10100110
        ——————————————————————
              10000010
  1. 按位或 |

规则:两个操作数二进制补码的每一个对应位都为0时结果为0,其他情况时为1。(即只要有一个为1结果就为1)
举例:

              11000011
             &10100110
        ——————————————————————
              11100111          

4.按位异或 ^
规则:两个操作数二进制补码的每一个对应位不同时结果为1,相同时为0。(异或异或着重点在
举例:

              11000011
             &10100110
        ——————————————————————
              01100101

5.按位左移 <<
规则:将操作数的二进制补码向左移动指定的位数,并且将高位舍弃,在低位补0。(左移即将最左边的n位舍弃,在最右边补n个0

                    1 0 1 0 0 1 1 0<<2
                _____________________
                    1 0 0 1 1 0 0 0

左移n位相当于该数乘以2n,前提是该数在舍弃的高位中不包含1的情况
6.按位右移 >>
规则:将操作数的二进制补码向右移动指定的位数,并且将低位舍弃,在高位补0。(右移对于无符号数而言:即将最右边的n位舍弃,在最左边补n个0

                    1 0 1 0 0 1 1 0>>2
                _____________________
                    0 0 1 0 1 0 0 1

三.位运算符的一些应用

1.确定某个操作数的二进制补码中的最低位

方法:

  1. 将这个操作数与1进行&操作
    原理:

                       1&1=1
                       0&1=0
    

即不论是1还是0,与1进行&操作后都能得到原来的值,进而可以确认。
2. 将这个操作数与0进行|操作
原理:

                       1|0=1
                       0|0=0

即不论是1还是0,与0进行 | 操作后都能得到原来的值,进而可以确认。

2.确定某个操作数二进制补码中1的个数

1.第一种:结合&操作符和>>操作符。
解释:因为操作数的二进制数补码中的最低位与1进行&操作后就能知道这个最低位是1还是0,故只要将操作数右移,然后操作数和1进行与操作&#

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值