美文网首页
位逻辑运算符

位逻辑运算符

作者: 李永开 | 来源:发表于2021-07-21 09:25 被阅读0次

一. 按位取反

//~:按位取反,如果是负数,则是对其补码取反.  因为负数在内存中就是以补码的形式存在的
void anWeiQuFan(void) {
    int a = 2;
    printf("%d\n", ~a);// -3
    //2: 0000 0010
    //~:按位取反,得 1111 1101, 1111 1101是负数, 负数应该用补码存储, 得反码1000 0010, +1得补码1000 0011, 得 -3

    
    int b = -3;
    printf("%d\n", ~b);//2 -3在内存中按人脑想象应该是111,但是存储的是补码是101,取反得010,也就是2
    
    int c = -2;
    printf("%d\n", ~c);//1  -2在内存的补码是:110  ~得001  1

    int d = -1;
    printf("%d\n", ~d);//0  -1在内存的补码是:111 ~得000   0

}


int main(int argc, const char * argv[]) {
    anWeiQuFan();
}

二. 与符号(按位与&)

int main(int argc, const char * argv[]) {
    //判断一个数是奇数还是偶数
    //奇数的二进制最后一位永远是1, 偶数的二进制最后一位永远是0
    //所以,用这个数 & 1,如果为1则奇数, 为0则偶数
    //&1其实就是&0000 0001, 不管那个数前面为几,&00000都是0,所以只看最后一位即可
    printf("%d\n", 11&1);// 1
    printf("%d\n", 10&1);// 0

}

三. 或符号(|)

四. 异或符号(^)

相同为0, 不同为1

//
//  main.c
//  cdemo
//
//  Created by liyongkai on 2021/6/6.
//

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>



int main(int argc, const char * argv[]) {
   
    /*
    3    0000 0011
    5   ^0000 0101
    6    0000 0110
     */
    
    printf("%d\n", 3^5); //结果为6
    printf("%d\n", 5^6); //结果为3
    printf("%d\n", 3^6); //结果为5
    
    //可得 a ^ b ^ b = a
    
    int a = 3;
    int b = 5;

    //交换两个数
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("a=%d b=%d\n", a, b);//a=5 b=3
}

五. 右移符号(>>)

  1. 对于无符号整数,左移右移在所有系统的结果都是一样的。
  2. 对于有符号证书(负数), 右移在不同的系统上结果可能是不一样的,需要注意

相关文章

  • C语言-按位逻辑运算符和位移运算符

    按位逻辑运算符 按位与运算符(bitwise AND operator) a & b 按位计算a和b的逻辑与; 按...

  • 1.4.运算符

    按功能分为: 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 其他运算符 ---------- 逻辑运算...

  • 【Java面试题】55 说说&和&&的区别。说说|和||的区别。

    &&逻辑与||逻辑或它们都是逻辑运算符&按位与|按位或它们都是位运算符 &&逻辑与也叫做短路与因为只要当前项为假,...

  • 位运算

    位运算包括逻辑运算和移位运算,相应地,位运算符包括逻辑运算符(包括~、&、|和^)和移位运算符(包括>>、<<和>...

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • Java &、&&、|、||、^、<

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • Java各种&、&&、|、||、^、<<、>>、~、>>>等运算

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • 运算符

    '''算数运算符 赋值运算符 比较(关系)运算符 逻辑运算符 位运算符 '''

  • 问题精选-Java

    一、&和&&的区别 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 二、Collection...

  • MySQL运算符

    算数运算符,比较运算符,逻辑运算符,位运算符 算数运算符: + - * / % 比较运算符: =, <>, !=...

网友评论

      本文标题:位逻辑运算符

      本文链接:https://www.haomeiwen.com/subject/jcrcmltx.html