• 【C++】运算符与表达式(学习笔记)


    一、运算符和表达式

    1、运算符概述

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号

    2、表达式概述

    在程序中,运算符是用来操作数据的,因此,这些数据也被称为操作数

    使用运算符将操作数连接而成的式子称为表达式

    3、算法运算符

    运算符描述
    +把两个操作数相加
    -从第一个操作数中减去第二个操作数
    *把两个操作数相乘
    /分子除以分母
    %取模运算符,整除后的余数
    ++自增运算符,整数值增加 1
    自减运算符,整数值减少 1

    4、关系运算符

    运算符描述
    ==检查两个操作数的值是否相等,如果相等则条件为真
    !=检查两个操作数的值是否相等,如果不相等则条件为真
    >检查左操作数的值是否大于右操作数的值,如果是则条件为真
    <检查左操作数的值是否小于右操作数的值,如果是则条件为真
    >=检查左操作数的值是否大于或等于右操作效的值,如果是则条件为真
    <=检套左操作数的值是否小于或等于右操作数的值,如果是则条件为真

    5、逻辑运算符

    运算符描述
    &&逻辑与运算符。如果两个操作数都非零,则为真
    ||逻辑或道算符:如果两个操作数中有任意一个非零,则为真
    !逻辑非运算符。真假逆转

    6、赋值运算符

    运算符描述
    =赋值运算符,把右边操作数的值赋给左边操作数
    +=把右边操作数加上左边操作数的结果赋值给左边操作救
    -=把左边操作数减去右边操作数的结果赋值给左边操作救
    *=把右边操作数乘以左边操作数的结果赋值给左边操作救
    /=把左边操作数除以右边操作数的结果赋值给左边操作救
    %=求两个操作数的模赋值给左边操作数
    <<=左移且赋值运算符
    >>=右移且赋值运算符
    &=按位与且赋值运算符
    ^=按位异或且赋值运算符
    |=按位或且赋值运算符

    7、位运算符

    1)位逻辑运算符

    &:位与

    ^:位异或

    |:位或

    ~:位取反

    pqp&qp|qp^q
    00000
    01011
    11110
    10011

    2)移位运算符

    <<左移运算符

    >>:右移运算符

    8、杂项运算符

    运算符描述
    sizeofsizeof 运算符返回变量的大小
    Condition ? X : Y条任运算符。如果 Condition 为真,返回值为 X,否则值为Y
    ,逗号运算符会顺序放行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的
    . 和 ->成号运算符用于引用类、结构和共用体的成员
    Cast强制转换运算符。把一种数据类型转换为另一种数据类型
    &指针运篁符。返回变量的地址
    *指针运算符。指向一个交量

    9、运算符优先级

    一般来说,一元运算符优先级高于对应的二元运算符

    弄不清楚优先级,就加括号

    二、补码

    1、机器数和真值

    机器数:一个数在计算机中的二进制表示形式

    机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1

    真值:真正的数学意义上的数值

    因为第一位是符号位,所以机器数的形式值就不等于真正的数值

    00000000000000000000000000000011 --> +3

    2、无符号数的编码

    机器数2^3(=8)2^2(=4)2^1(=2)2^0(=1)真值
    000100011
    010101015
    1011101111
    1111111115

    3、有符号数的补码

    机器数2^3(=8)2^2(=4)2^1(=2)2^0(=1)真值
    0001-00011
    0101-01015
    1011-1011-5
    1111-1111-1

    4、另一种计算补码的方法

    对正数:直接按位计算权重和

    对负数:保留符号位,对后面每位取反+1

    5、字节序 (Byte Ordering)

    大端法(Big Endian):大多数IBM 机器,Internet传输

    小端法(Little Endian):Intel 兼容机

    6、关于位运算的补充说明

    左移运算比较简单:末尾补零

    右移运算会有两种情况:

    1. 逻辑右移:移走的位填充为0
    2. 算术右移:移走的位填充与符号位有关,负数填充1

    对有符号的数,尽可能不要使用右移运算,运算取决于编译器

  • 相关阅读:
    MinIO - 站点复制 Site Replication
    C++算法 —— 动态规划(4)子数组
    AIGC|数字时代巨变,创新潮流涌现,万亿市值风口已开!
    C语言学习-数组应用-三子棋(4.1)
    令人期待的 CSS 新功能:让编码更高效
    <Redis开发与运维>一书阅读笔记记录
    C语言实现冒泡排序、选择排序、快速排序
    【若依】多级联动下拉的实现(附HTML及JavaScript参考代码)
    电子电子架构——AUTOSAR信息安全机制有哪些(下)
    HTML5 跨屏前端框架 Amaze UI
  • 原文地址:https://blog.csdn.net/wmh1024/article/details/133421424