• 运算符及选择结构(篇三)


    1. 位运算符
      针对二进制数的运算
      (1)位与:&
      对应位都为 1, 则结果为 1

      (2)位或:|
      对应位有 1, 则结果为 1

      (3)位反:~
      按位取反

      计算机时补码存储,原码输出!
      原码:
      正数的原码是其本身
      负数的原码是正数源码的基础上,符号位为 1
      反码:
      正数的反码是其本身
      负数的反码是在其原码的基础上,符号位不变,其余位按位取反
      补码:
      正数的补码是其本身
      负数的补码是在其原码的基础上,符号位不变,其余各位取反然后加 1
      即反码的基础上加 1

      例如:23
      0001 1000 - 1
      23: 0001 0111
      ~23: 1110 1000 (补码) //补码 = 反码 + 1 ===> 反码 = 补码 - 1
      1110 0111 (反码)
      1001 1000 (原码) // -24

      (4)异或:^
      对应位相同则结果为 0,不同为 1

      4 ^ 7 = 3
      0100
      ^0111
      --------
      0011

      5 ^ 3 = 6
      0101
      ^0011
      -------
      0110

      3210
      1111 ----> 1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1*2^3
      8421 ----> 1 + 2 + 4 + 8

      (5)左移:<<
      将数据左移相应的位数,低位补0, 高位溢出,
      即: 乘以 2^n

      4 << 2 ===> 0100 << 2 ===> 01 0000

      或者 : 4 * 2^2 = 4 * 4 = 16

      (6)右移:>>
      右移相应的位数,即处以 2^n

      0100 >> 2 ===> 0001 ===> 1
      4 >> 2 ===> 4 / 2^2 = 4/4 = 1

      将 123 的第四位置 0

      0000 0000 1000 0000 = 128
      0000 0000 0111 1111 = 127
      0000 0000 0111 1011 = 123

      1111 1111 1111 0111
      0xfff7

      不考虑其他位,只将第四位置 0,(从 0 开始2^0, 2^1, 2^2, 2^3, 2^4)
      123 & (0x0 << 4)

    2. 赋值运算符
      简单赋值运算符:=
      复合赋值运算符:
      +=, -=, *=, /=, %=
      &=, |=, ~=, <<=, >>=

      m += n ===> m = m + n
      m >>= n ===> m = m >> n
      m &= n ===> m = m & n

      左值:
      赋值号左侧的值,仅变量可以作为左值
      表达式的值不可作为左值
      右值:
      赋值号右侧的表达式,变量, 或值,左值,均可作为右值

    3. 运算符的优先级
      括号成员第一,全体单目第二,乘除余三,加减四
      位移五,关系六,等(==)与不等(!=)排第七
      位与,异或和位或八九十
      逻辑与和或十一与十二
      条件(?:)高于赋值,逗号运算最低

      int a = 1,2,3,4,5; //如果逗号运算符高于赋值运算符,则正确编译,a = 5
      int b = 1,2,3,4,5; //如果赋值运算符高于逗号运算符,则无法正确编译
      int c = (12, 34, 56); //OK, c = 56;

    4. 选择结构
      (1)C 语言的三大结构
      顺序结构
      选择结构
      循环结构

    (2)if 的使用
    a. 基本用法
    if(表达式)
    {
    //代码块,即要执行的代码
    }

    如果表达式的结果为真,则执行 if 之后 {} 里的内容
    否则不执行

    b. if~else
    if(表达式)
    {
    //codeBlocks1
    }
    else
    {
    //codeBlocks2
    }

    表达式成立 ,则执行 codeBlocks1
    表达式不成立,则执行 codeBlocks2

    思考:
    输入一个数,判断该数是否是 3 的倍数???
    若是则输出该数,否则输出 false

    c. if ~ else 的嵌套使用
    if(表达式1)
    {
    //codeBlocks1
    if(表达式2)
    {
    //codeBlocks2
    }
    //other codeBlock
    }
    else
    {
    if(表达式2)
    {
    //codeBlock3
    }
    else
    {
    //codeBlocks4
    }
    }

    千里之行,始于足下!
  • 相关阅读:
    wireshake抓包,飞秋发送信息,python
    python问题:IndentationError:expected an indented block错误解决《转》
    560. Subarray Sum Equals K
    311. Sparse Matrix Multiplication
    170. Two Sum III
    686. Repeated String Match
    463. Island Perimeter
    146. LRU Cache
    694. Number of Distinct Islands
    200. Number of Islands
  • 原文地址:https://www.cnblogs.com/MINAIot/p/13041018.html
Copyright © 2020-2023  润新知