22. 位掩码与标志
用 AND 选择单个位,用 OR 设置位。
打开本课 →
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 13
AND 5
PRINT
OR 2
PRINT
HALT
加入输入队列: 无
初始化内存: 所有字节初始为零
2. 构建与检查
读取 0 到 255 的一个字节。使用 AND 5,将其第 0 和第 2 位以数字掩码形式输出。
必需的指令类型: INPUT, AND
起始程序
INPUT
#
PRINT
HALT
你的程序与笔记
3. 解释机器
掩码 5 选择什么?
23. 翻转位
利用 XOR 的可逆变化更新保存的设置。
打开本课 →
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 42
XOR 6
PRINT
XOR 6
PRINT
HALT
加入输入队列: 无
初始化内存: 所有字节初始为零
2. 构建与检查
读取一个字节。翻转第 1 和第 2 位,将结果保存到地址 20,读回后输出。再次翻转这些位,将恢复后的字节保存到地址 20,并输出恢复值。
必需的指令类型: INPUT, XOR, STORE, LOAD
起始程序
INPUT
XOR 6
STORE 20
LOAD [20]
PRINT
#
HALT
你的程序与笔记
3. 解释机器
相同 XOR 掩码翻转两次后会怎样?
24. 有符号位与最大值
理解 NOT,用符号掩码检查有符号差值。
打开本课 →
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 255
NOT
PRINT
NOT
PRINT
HALT
加入输入队列: 无
初始化内存: 所有字节初始为零
2. 构建与检查
读取两个整数,各在 −10,000 到 10,000 之间,输出较大值。使用减法和有符号 32 位符号掩码。
必需的指令类型: INPUT, SUB, AND, JUMP_IF_ZERO
起始程序
INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
SUB R2
AND -2147483648
#
HALT
你的程序与笔记
3. 解释机器
NOT 255 为什么等于 −256,而不是 0?