C 语言关于位运行符

C 语言提供了一系列位运算符,用于对二进制位进行操作。这些运算符在处理位级数据、进行性能优化以及实现特定的算法时非常有用。

  1. 按位与运算符(&):两个相应的二进制位都为 1 时,结果才为 1。例如,a & b
  2. 按位或运算符(|):两个相应的二进制位中只要有一个为 1 时,结果就为 1。例如,a | b
  3. 按位异或运算符(^):两个相应的二进制位不同时,结果为 1,否则为 0。例如,a ^ b
  4. 按位取反运算符(~):对一个数的每一位执行逻辑非操作,即把 1 变为 0,把 0 变为 1。例如,~a
  5. 左移运算符(<<):将二进制数向左移动指定的位数,右侧用 0 填充。例如,a << b 表示将 a 向左移动 b 位。
  6. 右移运算符(>>):将二进制数向右移动指定的位数,左侧用符号位的值填充(算术右移)。例如,a >> b 表示将 a 向右移动 b 位。

下面是一个示例代码,演示如何使用位运算符:

#include <stdio.h>  
  
int main() {  
    int a = 60;  // 二进制表示:0011 1100  
    int b = 13;  // 二进制表示:0000 1101  
    int c;  
  
    c = a & b;       // 按位与:0000 1100  
    printf("a & b = %d\n", c);  
  
    c = a | b;       // 按位或:0011 1101  
    printf("a | b = %d\n", c);  
  
    c = a ^ b;       // 按位异或:0011 0001  
    printf("a ^ b = %d\n", c);  
  
    c = ~a;          // 按位取反:1100 0011  
    printf("~a = %d\n", c);  
  
    c = a << 2;      // 左移两位:0111 1000  
    printf("a << 2 = %d\n", c);  
  
    c = a >> 2;      // 右移两位:0000 1111  
    printf("a >> 2 = %d\n", c);  
  
    return 0;  
}

请注意,在使用位运算符时,操作数通常被当作无符号整数处理。因此,当处理有符号整数时,需要格外小心。特别是右移操作在不同平台和编译器上可能会有不同的行为(逻辑右移或算术右移)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十启树

您的认可是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值