C语言day06-04位运算

作者: liyuhong165 | 来源:发表于2016-05-01 00:12 被阅读109次

pragma mark 位运算

pragma mark 概念

/**
 *  位运算是指按照二进制进行的运算,在系统软件中,常常需要处理二进制位的问题,C语言提供了6个位操作运算符,这些运算符只能用于整型操作数,即只能用于带符号或无符号的char、short、int与long类型
 *
 */

pragma mark 代码

#include <stdio.h>
int main()
{
    /**
     & 按位与
     | 按位或
     ^ 按位异或
     ~ 取反
     */
#pragma mark  位运算与
    /*
      按为与 &
      规则
     9 & 5 = ?
     
     1001
    &0101
    -----
     0001   // 二进制 1
     
     规律: 任何数和1相&等到的结果还是那个数
     1001
    &1111
    -----
     1001
     */
    printf("%i\n",9 & 5);
    
#pragma mark  位运算或
    /*
     按位或 |
     规律: 一真则真
     9 | 5 = ?
     
     1001
    |0101
    -----
     1101 = 13
     
     */
    printf("%i\n",9 | 5);

#pragma mark  位运算异或 (异:不相同)
    /*
     按位异或 ^
     规律:不相同为1,相同为0
     9 ^ 5 = ?
     
     1001
    ^0101
    -----
     1100  == 12
     
     printf("%i\n",9 ^ 5);
     重点:
     规律: 异或的结果和参与运算的顺序没有关系
     9 ^ 5 ^ 6 = ?
     
     1001
    ^0101
     ----
     1100
    ^0110
     ----
     1010 == 10
     
     5 ^ 6 ^ 9 = ?
     0101
    ^0110
     ----
     0011
    ^1001
     ----
     1010 == 10
     printf("%i\n",5 ^ 9 ^ 6);

     规律: 相同的两个数异或等于0
     5 ^ 5 = ?
     6 ^ 6 = ?
     
     0101
    ^0101
     -----
     0000
     
     0110
    ^0110
     -----
     0000
     
     规律 : 任何一个数异或上0结果不变
     9 ^ 0 = ?
     5 ^ 0 = ?
     
     1001
    ^0000
     -----
     1001 == 9
     
     0101
    ^0000
     -----
     0101 == 5

     
     9 ^ 5 ^ 5 = ?
     5 ^ 9 ^ 5 = 9 ^ 5 ^ 5 == 9 ^ 0 == 9
     规律: 任何一个数异或上同一个数两次,结果不变
     
     1001
    ^0101
     ----
     1100
    ^0101
     ----
     1001 == 9
     */
    printf("%i\n",5 ^ 9 ^ 6);
#pragma mark  位运算取反
    
    /*
     取反 ~
     ~9 = ?
     
     0000 0000 0000 0000 0000 0000 0000 1001
    ~1111 1111 1111 1111 1111 1111 1111 0110 // 补码 需要 转成反码 再原码
    -0000 0000 0000 0000 0000 0000 0000 0001
     ----------------------------------------
     1111 1111 1111 1111 1111 1111 1111 0101  // 反码
     1000 0000 0000 0000 0000 0000 0000 1010  // 补码
     
     原码 --> 反码(取反) --> 补码(+1)
     补码 --> 反码(-1)  --> 原码取反
     */
#pragma mark  位运算与
#pragma mark  位运算与

    return 0;
}

相关文章

  • C语言day06-04位运算

    pragma mark 位运算 pragma mark 概念 pragma mark 代码

  • 巧妙运用C语言位运算

    巧妙运用C语言位运算,C语言是面向过程的,而C++是面向对象的 位运算 位运算的运算分量只能是整型或字符型数据,位...

  • C语言位运算

    C语言位运算_C语言中文网 C语言位域(位段)_C语言中文网

  • 16_位运算符分析

    关键词: C语言中的位运算符、 左移和右移注意点、位运算防错准则、 位运算符和逻辑运算符的区别 1. C语言中的位...

  • C语言 位运算

    ###位运算的逻辑: 1:(位与)运算符(&):双目操作符,当两个位进行相与时,只有两者都为“1”时结果才为“1”...

  • C语言位运算

    C语言里位运算就是对一个比特(Bit)进行操作,比特(Bit)是计算机的一个电子元件,只有通电和断电两种状态(这也...

  • c语言位运算

  • C语言:按位运算

    C语言:按位运算 C有这些按位运算的运算符& 按位的与| 按位的或~ 按位取反^ 按位的异或<< ...

  • 位运算

    位运算小结(按位与、按位或、按位异或、取反、左移、右移) 位运算不管是在Java语言,还是在C语言中,或者其他语言...

  • 嵌入式C语言的位运算

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

网友评论

    本文标题:C语言day06-04位运算

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