二进制运算
加法,,
和十进制加法相同,从低位加到高位,如果结果大于 1 则进位。
190 10111110
+141 10001101
--------------
331 101001011
例
减法,,
将减法转化为加法进行计算,可以复用加法结构(加法器)。
移位,,
- Shift left:
- SL
- LSL (logic shift left)
- <<1
- Logic shift right: 所有位右移后最高位补零
- LSR (logic shift right)
- LRS (logic right shift)
- SR (shift right)
- >>1
- Arithmetic shift right: 所有位右移后最高位补上原来最高位的值
- ASR (arithmetic shift right)
- ARS (arithmetic right shift)
乘以 2 的幂,,
一个数乘以 2x 即左移 x 位
对于无符号:
如果左移过多,使最左的 1 溢出,则会导致计算结果错误。
对于补码:
如果左移后,符号位发生变化,则会导致计算结果错误。
除以 2 的幂,,
根据编码方式使用算术右移或逻辑右移。
对于无符号,使用逻辑右移
对于补码,使用算术右移
Flags
- Carry flag: indicates an error when the result of anoperation on binary (unsigned) numbers cannot berepresented with the chosen bit-width.
- Overflow flag: indicates an error when the result of an operation on 2’s complement numbers cannot be represented with the chosen bit-width.
- Sign flag (S or N): indicates that the MSB is set; i.e. the number is negative if it were in 2’s complement.
- Zero flag (Z): indicates that the result of the arithmetic operation is zero.