一 操作符的分类
备注: 核心是学习'重点'、'难点'、'易错点'
二 算术操作符
+ - * / %["求余"]
三 移位操作符
+++++++'箭头表示移动方向'+++++++
1. << '左'移操作符
2. >> '右'移操作符
(1)原码、反码、补码回顾
正数: 原码、反码、补码'三者合一'
负数: -1 -->int
原码: 10000000 00000000 00000000 00000001 -->4*8=32 -->最高位是'符号位'
备注: 正数符号位是'0',负数的符位是'1'
反码: 11111111 11111111 11111111 11111110 -->'符号位'不变,其它位'取反'
补码: 11111111 11111111 11111111 11111111 -->'反码+1'
+++++++++++++'重点理解记忆'+++++++++++++
1. 整数在'内存'中以'补码'形式存储,'移位'移的是'补码'对应的二进制位
2. printf'打印'的是'原码'
3. 场景-->'移位来指定大小'
(2)移位基本概念
++++++++++++'移位操作符的两种形式'++++++++++++
1. 算术移位 -->'正数、负数'差别很大 -->'左边'用原该值的'符号位填充','右边丢弃'
2. 逻辑移位 --> 不考虑'正、负'数 --> '左边永远'用0填充,'右边'丢弃
问题: 如何判断'编译器'选择哪种形式? -->一般是'算术移位'
(3)右移操作符
① 正整数
② 负整数
备注: '编译器'采用的是'算术移位'
(4)左移操作符
左移操作符,移位'规则': 左边'抛弃'、'右边补0' -->'规则简单'
(5)警告信息