zoukankan      html  css  js  c++  java
  • 位运算【C++学习(计蒜客)】

    C++提供了位运算操作符,使程序可以直接对内存进行操作。C++的这个特色大大提高了C++程序的执行能力。例如使用位操作运算可以将一个存储单位中的各个二进制位左移或右移一位,也可以将一个存储单位中所有的二进制位取反,这些操作多数要比直接进行数值上的运算要高效的多。
    学习位运算之前,我们先来了解几个概念:
    字节:字节是数据存储和数值计算的基本单位,也是从内存读取数据和写入数据的最小单位,单位是byte
    位:在操作系统中,字节还可以划分为更小的单位——位。一个字节由8个位组成,每个位的值为0或1,单位bit
    取反(~):即将1变成0,0变成1,也就是说:
    ~1=0;
    ~0=1;
    取反就是将一个数的二进制码的补码取反,正数的补码是本身,负数的是按位取反加1.
    且运算(&):或者叫与运算,基本的位运算符之一。形式为“数值1 & 数值2”,比方说:
    1&0=0;
    或运算(|):基本的位运算符之一,形式为“数值1|数值2”,比方说:
    1|0=1;
    移位运算:包括左移运算(<<)右移运算(>>),形式为“数值1<<数值2”(>>同理)表示数值1的全部二进制位向左(右)移数值2位

    取反训练:

    #include<iostream>
    using namespace std;
    int main(){
        int a;
        cin>>a;
        cout<<hex<<a<<" "<<~a<<endl;
        return 0;
    }

    移位操作训练:
    由于二进制各位之间的关系恰位两倍,左移一位其实可以起到了乘以2的作用,右移一位则可以起到除以2的作用

    #include<iostream>
    using namespace std;
    int main(){
        int a;
        a=5;
        a=a<<2;
        cout<<a<<endl;
        return 0;
    }
    
  • 相关阅读:
    internet连接共享被启用时 出现了一个错误 (null)
    mybatis01-1测试
    配置没有问题,虚拟机Ubuntu系统ifconfig没有网卡信息
    Ubuntu启动Apache
    VM虚拟机Linux系统eth0下面没有inet和inet6
    jQuery通过id和name获取值的区别
    1.4.3 ID遍历爬虫(每天一更)
    mysql中的SQL语句执行的顺序
    Mecanim动画系统丶
    html中常见的行内元素和块级元素,还有常见的行内块元素
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934434.html
Copyright © 2011-2022 走看看