由我口述转文字,豆包整理markdown,她真的擅长做这个20251006:)
逻辑运算
-
Not 运算符
- 类型:一元运算符(仅需1个输入)。
- 含义:表示“非”“反”,对输入进行取反操作。
- 类比:类似 JavaScript 中表“非”的感叹号(!)。
-
AND 运算符
- 类型:二元运算符(需2个输入,输出1个结果)。
- 含义:表示“与”“且”关系,仅当两个输入均满足条件时,结果才为真。
-
OR 运算符
- 类型:二元运算符(需2个输入,输出1个结果)。
- 含义:表示“或”关系,只要两个输入中有一个满足条件,结果即为真。
- 类比:类似 JavaScript 中的两个竖杠(||)。
-
XOR 运算符(异或)
- 类型:二元运算符(需2个输入,输出1个结果)。
- 含义:属于“或”的特殊形式,要求两个输入不能相同;结果为“要么是这个,要么是那个”,既不能两个都对,也不能两个都错。
-
Not 运算符的应用:唯一应用是对当前的存储序列进行取反。
置位/复位运算
-
置 0 操作(复位)
- 工具:使用 AND 运算符。
- 方法:提供一个与原位模式等长的“掩码”,需要置 0 的位,对应掩码的位就设为 0。
-
置 1 操作(置位)
- 工具:使用 OR 运算符。
- 方法:提供一个与原位模式等长的“掩码”,需要置 1 的位,对应掩码的位就设为 1。
-
掩码定义:在置 0 或置 1 运算中,用于覆盖原本序列的序列,称为“掩码”。
移位运算
一、逻辑移位
- 逻辑右移:将序列中每一位向右移动1个位置;最右边的位会丢失,最左边的位填入 0。
- 逻辑左移:将序列中每一位向左移动1个位置;最左边的位会丢失,最右边的位填入 0。
二、循环移位
- 核心特点:无位丢失;原本应当被丢弃的位,会填充到序列的缺失位位置。
- 分类:包含循环左移和循环右移。
- 示例(循环左移):最左边的位会填充到原本最右边的位的位置(因右1位会移到右2位,产生右位空缺)。
三、算数移位
-
前提假设:假定当前的位模式是“二进制补码”格式。
-
算术右移
- 核心规则:保留符号位,同时将符号位向右复制1位(即符号位本位保留,与其右侧相邻的位置也变为与符号位相同的数值)。
- 示例:位模式 10011001 算术右移后,结果为 11001100(左侧两个 1 源于符号位 1 本位保留且向右复制)。
-
算术左移
- 核心规则:丢弃左边的符号位,以左2位作为新的符号位;若新符号位与原符号位相同,运算成功;若不同,会发生上溢或下溢,运算失败。
- 成功示例:补码 00101001(十进制 41)算术左移1位后为 01010010(十进制 82),新符号位(0)与原符号位(0)相同,运算成功。
- 失败示例:补码 01101001(十进制 105)算术左移1位后为 11010010,新符号位(1)与原符号位(0)不同,发生上溢,运算失败。
算术运算
一、二进制补码的加法
- 运算规则:与十进制加法类似,对应列相加;若出现 1+1 需进位的情况,本位置 0,将进位的 1 加到左侧更高位;若更高位相加后仍需进位,则依次类推;若到最左一列仍有进位,该进位直接放弃。
二、二进制补码的减法
- 运算步骤:计算机先对第二个数(减数)求二进制补码,然后对其加 1。
- 加 1 操作细节:仅需在该二进制补码的最后一位加 1;若出现进位情况,按进位规则处理(依次向高位进位)。
三、特殊符号含义
- 字符上方加横杠(如A‾\overline{A}A):表示对该字符对应的数值进行取反操作。
3579

被折叠的 条评论
为什么被折叠?



