C-位运算符

& 位与运算符(都为1结果才是1)
    //1010 1010 &
    //1011 0101 
    //------------
    //1010 0000

    int sRes = 0b10101010 & 0b10110101;
    system("pause");
二进制数需要由0b开头 十六进制0x开头
​

| 位或运算符(有1则为1,全0才为0)
​   //1010 1010 & 
   //1011 0101 
   //------------ 
   //1011 1111

   int bRes = 0b10101010 | 0b10110101;​


~ 位非运算符(0变1,1变0)
//10101010 ~
    //------------
    //01010101
    int bRes = ~0b10101010;
​
^ 异或运算符 : 相同为0,不同为0,如果两个都是0,那么结果为0
    //10101010 ^
    //11110100
    //------------
    //01011110
    int bRes = 0b10101010 ^ 0b11110100;
    
    异或加密:
    char cA = 'A';
    char cB = 'B';
    char cT = cA ^ cB;
​
    printf("%x %c %c", cT, (cT ^ cB), (cT ^ cA));
    输出的值为3 A(cT^cB) B(cT^cA),当两个数据(cA,cB)进行异或操作得到第三个值(cT)以后,那么这个时候第这三个数据两两进行异或后会得到第三个数据。(最简单的异或加密)
    
​
>> 左移运算符(补位机制:都补0)
    //00000001 << 5
    // ----------
    //00100000 32
    char cTemp = 0b00000001;
    char cRes = cTemp << 5;
    
​
<< 右移运算符   (补位机制:符号位为1时,用1进行补位,符号位为0时,用0进行补位)
    //10010000 >> 3 => 11110010 
    //00010000 >> 3 => 00000010
    char cTemp = 0b10010000;
    char cRes = cTemp >> 3;
    
  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值