只有在右移时才必须区分逻辑位移和算术位移。 左移时, 无论是图形模式( 逻辑左移) 还是相乘运算( 算术左移), 都只需在空出来的低位补 0 即可。
符号扩充就是指在保持值不变的前提下将其转换成 16 位和 32 位的二进制数。
符号扩充的方法:不管是正数还是用补数表示的负数, 都只需用符号位的值( 0 或者 1) 填充高位即可。如01111111 这个正的 8 位二进制数转换成 16 位二进制数是 0000000001111111 ; 11111111这个用补数表示的负数转换成 16 位二进制数是1111111111111111
在运算中, 与逻辑相对的术语是算术。 我们不妨这样考虑, 将二进制数表示的信息作为四则运算的数值来处理就是算术。 而像图形模式那样, 将数值处理为单纯的 0和 1 的罗列就是逻辑。
算术运算是指加减乘除四则运算。
逻辑运算是指对二进制数各数字位的 0 和 1分别进行处理的运算, 包括逻辑非( NOT 运算)、 逻辑与( AND 运算)、 逻辑或( OR 运算) 和逻辑异或( XOR 运算 A) 四种。
逻辑非指的是 0 变成 1、 1 变成 0 的取反操作。
逻辑与指的是“两个都是 1” 时, 运算结果为 1, 其他情况下运算结果都为 0 的运算
逻辑或指的是“至少有一方是 1” 时, 运算结果为 1, 其他情况下运算结果都是 0 的运算。
逻辑异或指的是排斥相同数值的运算。“两个数值不同”, 也就是说, 当“其中一方是 1, 另一方是 0” 时运算结果是 1, 其他情况下结果都是 0。
逻辑真值表如下: