美文网首页
位运算(了解)

位运算(了解)

作者: Coder007 | 来源:发表于2016-10-13 17:35 被阅读44次

本篇文章仅作为了解

位运算

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 取反
  • << 左移
  • >> 右移
按位与 &
  • 一假则假,1真 0假
    9 & 5 =
    1001
   &0101
   -------
    0001 = 1
按位或 |
  • 一真则真
    9 | 5 =
    1001
   &0101
   -----
    1101  = 13
按位异或 ^
  • 不相同为1,相同为0
    9 ^ 5 =
    1001
   |0101
   -----
    1100  = 12
  • 异或的结果和参与运算的顺序没有关系
  • 相同的两个数异或 等于0
  • 任何一个数异或0的结果还是这个数
  • 任何一个数异或同一个数两次,结果不变
取反
  • 是单目运算符,作用是对参与运算的二进制位取反,~1 = 0 , ~0 = 1
  • 取反运算时对参与运算的数的在内存中存储的补码进行取反
  • 想得到真实的值,就需要对取反后的值进行还原
  • 先转换成反码,然后转换成原码
左移
  • 左移就是将操作数各个二进制位全部左移若干位,高位丢弃,低位补0
  • 如果数据较小,被丢弃的高位不包含1,那么左移n位相当于乘以2的n次方
  • 左移有可能改变一个数得正负性
右移
  • 右移和左移相反
  • 右移就是将操作数的各个二进制位全部右移若干位,低位丢弃,高位补0或1,如果最高位是0补0,是1补1
  • 如果被丢弃的低位不包含1,那么右移n位相当于除以2的n次方
左移和右移的应用场景,如果想让某一个数乘以2的n次方,或者除以2的n次方,最高效的方法就是左移右移
输出整数的二进制
/**
 让value的二进制位向右移31,就可以获得到value的最高位的二进制,然后让value德二进制的最高位和1相&,就可以获得value的最高位
 其他位置上的以此类推
 此方法输出的是补码,如果是负数,那么还需要转换成原码
 */
void printBinay(int value)
{
    //1.定义变量需要向右移动的位数
    int offset = 31;
    //2.通过循环取出每一位数
    while (offset >= 0) {
        int result = (value >> offset) & 1;
        printf("%i", result);
        offset--;
        if((offset + 1) %4 == 0){
            printf(" ");
        }
    }
}
判断一个数的奇偶性
    if((num & 1) == 1){
        printf("奇数\n");
    }else{
        printf("偶数\n");
    }
交换两个变量的值
  • 第一种方式
int temp = a;
a = b;
b = temp;
  • 第二种方式
a = a + b;
b = a - b;
a = a - b;
  • 第三种方式
a = a ^ b;
b = a ^ b;
a = a ^ b;

相关文章

  • 位运算(了解)

    本篇文章仅作为了解 位运算 & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 按位与 & 一...

  • 嵌入式C语言的位运算

    想必大家都了解&&(且运算符),||(或运算符),在C语言的位运算中 ,位或运算|,位与运算&,异或^,取反~。等...

  • 小朋友学C语言(24):位运算符

    位运算符有四个:“与(&)”、“或(|)”、“异或(^)”、“按位取反(~)”。 在了解位运算符之前,请先复习逻辑...

  • Day03

    一. 位运算符(了解) 定义对数值进行二进制的位运算在位运算中 0 为假, 1为真 分类& : 有0则为0| : ...

  • 运算符

    运算符主要包括四大类:数字运算符、逻辑运算符、比较运算符、赋值运算符、位运算符(了解) 1.数学运算符 + - *...

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

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

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

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

网友评论

      本文标题:位运算(了解)

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