• 位运算操作


    #include <stdio.h>

    int main() {
    int a = 3; // 二进制为 0000 0000 0000 0000 0000 0000 0000 0011
    int b = 6; // 二进制为 0000 0000 0000 0000 0000 0000 0000 0110
    int c = -4; // 二进制为 1111 1111 1111 1111 1111 1111 1111 1100 (绝对值取反加一)
    // 位运算符有: & | ^ ~ << >> , 运算对象是 int 型 和 char 型
    // 补位原则: 不同长度的数据之间进行位运算,将按右侧对齐的原则进行处理,即按长度较大的数据进行处理,将长度较小的数据在左侧进行补位。
    // 例如:一个char型数据和一个int型数据进行位操作,先将char型数据左侧位补齐,再进行位运算。补位的原则是,对于正数和无符号数,左侧补0,对于负数,左侧补1。



    // & : 与运算符 ,优先级:逻辑运算符和关系运算符之间,1+1=1,0+1=0,0+0=0;
    // | : 或运算符,优先级:逻辑运算符和关系运算符之间, 1+1=1, 0+1=1; 0+0=0;
    // ^ : 异或运算符,优先级:逻辑运算符和关系运算符之间, 1+1=0, 0+1=1; 0+0=1;
    // ~ :取反运算符(优先级要高于算术运算符)0变1,变0



    // << : 位移运算符,运算规则:左移 ,优先级: 关系运算符和算数运算符之间


    // 5 << 2, 相当于把5的二进制 向左移动2位,后面补0,结果为int型的5乘2的2次方
    // 5 << 3, 相当于把5的二进制 向左移动2位,后面补0,结果为int型的5乘2的3次方
    // 5 << 4, 相当于把5的二进制 向左移动2位,后面补0,结果为int型的5乘2的4次方



    // >> : 位移运算符 ,运算规则:右移 ,优先级: 关系运算符和算数运算符之间


    // 5 >> 2, 相当于把5的二进制 向右移动2位,前面补0,结果为int型的5除2的2次方
    // 5 >> 3, 相当于把5的二进制 向右移动2位,前面补0,结果为int型的5除2的3次方
    // 5 >> 4, 相当于把5的二进制 向右移动2位,前面补0,结果为int型的5除2的4次方
    printf("%d", a);
    return 0;
    }

  • 相关阅读:
    gulp自动化压缩合并、加版本号解决方案
    利用gulp 插件gulp.spritesmith 完成小图合成精灵图,并自动输出样式文件
    gulp插件(8)
    gulp插件 run-sequence(同步执行任务)
    gulp合并压缩
    Freemarker 基础概念
    querystring模块详解
    深入理解JavaScript的闭包特性如何给循环中的对象添加事件
    堆中的路径
    公式求值
  • 原文地址:https://www.cnblogs.com/hello-dummy/p/9217052.html
Copyright © 2020-2023  润新知