我在我的书中读过这句话:
Logical and Shift Instructions Operate on bits individually Unlike arithmetic, which operate on entire word
Use to isolate fields. Either by masking or by shifting back and forth.
这两个句子我完全看不懂。
移位和算术指令都会改变所有位(在某些情况下),而在算术中,位会被逐个相加以计算答案。
那么这部分是什么意思“指令对位单独操作不像算术,它对整个单词进行操作”?
我的第二个问题:
我不知道这部分有什么想法,你能给我解释一下吗:
Use to isolate fields. Either by masking or by shifting back and forth.
我的第三个问题:什么是逻辑指令。例如,他的意思是 AND,OR 吗?你能解释更多吗?
最佳答案
逻辑和移位操作通常称为按位操作。它们单独对位进行操作,这意味着每个输出位仅取决于输入中单个固定位位置的位,您可以立即计算该位而不依赖于任何其他位或之前的计算结果
例如在 AND、OR、XOR... output[n]
(即输出中的第 n 位)由 input1[n]
和 计算得出>input2[n]
。类似地,左移 N 只从 input[i - N]
产生 output[i]
,而从 input[n]
进行补码(NOT)转换> 到 输出[n]
。我正在从 here 获取示例图像这样更容易理解
OTOH 加法结果中的每一位都依赖于进位,你必须像这样等待前面的加法操作完成 Sn = An + Bn + Cn
可以通过预先计算进位来进行更快的加法,例如 carry-lookahead adder 中的一些逻辑。 ,但它仍然比没有依赖项的按位运算更慢并且需要更多的裸片区域。同样,其他算术运算也不能通过单独获取每个输出位来完成。
这是您的第一个和第三个问题。关于第二个
Use to isolate fields Either by masking or by shifting back and forth.
表示他们习惯于获取 bit fields通过使用 AND 进行掩码(即只让该字段中的位通过,过滤掉掩码为零的位置的位),或将位移出为零并移回其原始位置
进一步阅读:
- What are bitwise shift (bit-shift) operators and how do they work?
- How do you set, clear, and toggle a single bit?
- What is Bit Masking?
- What are bitwise operators?
- https://en.wikipedia.org/wiki/Bit_manipulation
- https://en.wikipedia.org/wiki/Bitwise_operation
- https://en.wikipedia.org/wiki/Adder_(electronics)
- bitwise-operators
- bit-manipulation
关于assembly - "shift operates on bits individually"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166507/