读《计算机科学导论》第4版 第四章

由我口述转文字,豆包整理markdown,她真的擅长做这个20251006:)

逻辑运算

  1. Not 运算符

    • 类型:一元运算符(仅需1个输入)。
    • 含义:表示“非”“反”,对输入进行取反操作。
    • 类比:类似 JavaScript 中表“非”的感叹号(!)。
  2. AND 运算符

    • 类型:二元运算符(需2个输入,输出1个结果)。
    • 含义:表示“与”“且”关系,仅当两个输入均满足条件时,结果才为真。
  3. OR 运算符

    • 类型:二元运算符(需2个输入,输出1个结果)。
    • 含义:表示“或”关系,只要两个输入中有一个满足条件,结果即为真。
    • 类比:类似 JavaScript 中的两个竖杠(||)。
  4. XOR 运算符(异或)

    • 类型:二元运算符(需2个输入,输出1个结果)。
    • 含义:属于“或”的特殊形式,要求两个输入不能相同;结果为“要么是这个,要么是那个”,既不能两个都对,也不能两个都错。
  5. Not 运算符的应用:唯一应用是对当前的存储序列进行取反。

置位/复位运算

  1. 置 0 操作(复位)

    • 工具:使用 AND 运算符。
    • 方法:提供一个与原位模式等长的“掩码”,需要置 0 的位,对应掩码的位就设为 0。
  2. 置 1 操作(置位)

    • 工具:使用 OR 运算符。
    • 方法:提供一个与原位模式等长的“掩码”,需要置 1 的位,对应掩码的位就设为 1。
  3. 掩码定义:在置 0 或置 1 运算中,用于覆盖原本序列的序列,称为“掩码”。

移位运算

一、逻辑移位

  1. 逻辑右移:将序列中每一位向右移动1个位置;最右边的位会丢失,最左边的位填入 0。
  2. 逻辑左移:将序列中每一位向左移动1个位置;最左边的位会丢失,最右边的位填入 0。

二、循环移位

  1. 核心特点:无位丢失;原本应当被丢弃的位,会填充到序列的缺失位位置。
  2. 分类:包含循环左移和循环右移。
  3. 示例(循环左移):最左边的位会填充到原本最右边的位的位置(因右1位会移到右2位,产生右位空缺)。

三、算数移位

  1. 前提假设:假定当前的位模式是“二进制补码”格式。

  2. 算术右移

    • 核心规则:保留符号位,同时将符号位向右复制1位(即符号位本位保留,与其右侧相邻的位置也变为与符号位相同的数值)。
    • 示例:位模式 10011001 算术右移后,结果为 11001100(左侧两个 1 源于符号位 1 本位保留且向右复制)。
  3. 算术左移

    • 核心规则:丢弃左边的符号位,以左2位作为新的符号位;若新符号位与原符号位相同,运算成功;若不同,会发生上溢或下溢,运算失败。
    • 成功示例:补码 00101001(十进制 41)算术左移1位后为 01010010(十进制 82),新符号位(0)与原符号位(0)相同,运算成功。
    • 失败示例:补码 01101001(十进制 105)算术左移1位后为 11010010,新符号位(1)与原符号位(0)不同,发生上溢,运算失败。

算术运算

一、二进制补码的加法

  1. 运算规则:与十进制加法类似,对应列相加;若出现 1+1 需进位的情况,本位置 0,将进位的 1 加到左侧更高位;若更高位相加后仍需进位,则依次类推;若到最左一列仍有进位,该进位直接放弃。

二、二进制补码的减法

  1. 运算步骤:计算机先对第二个数(减数)求二进制补码,然后对其加 1。
  2. 加 1 操作细节:仅需在该二进制补码的最后一位加 1;若出现进位情况,按进位规则处理(依次向高位进位)。

三、特殊符号含义

  • 字符上方加横杠(如A‾\overline{A}A):表示对该字符对应的数值进行取反操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值