详解逻辑移位和算术移位

移位运算时计算机三大基本运算之一,基本运算包括按位运算逻辑运算移位运算
基本运算的特点:
(1)仅对寄存器中的数据进行运算。
(2)计算机中最基本的操作单元,在一个时钟周期内完成。
(3)需要控制信号。

1.逻辑移位
操作对象:二进制无符号数,例如像地址。
(1)逻辑右移
特点:高位补0,低位移出。
(2)逻辑左移
特点:低位补0,高位移出。

问题探究:什么时候会发生溢出?如何判断溢出?
如果高位移出的是一,则左移发生溢出。

2.算术移位
操作对象:二进制有符号数,现代计算机中有符号数字使用补码表示。由于计算机不能识别正负号,而0/1恰好可以表示这两种状态。这样就将符号数字化了。

问题探究:什么时候会发生溢出?如何判断溢出?
算术左移溢出判断:如果移出的位不等于新的符号位,则溢出。
算术右移不会发生溢出,但是如果移出的低位不为0,则可能发生数据丢失的的情况。

(1)算术左移
算术左移:按指定的位数向左移位,C语言中用符号 “<<” 表示。
移出的位放在一个特殊的寄存器中,低位补0。
这里写图片描述
算术左移可以实现的功能:左移n位实现乘以2^n的功能。

(2)算术右移
算术右移:按指定的位数向右移位,C语言中用符号 “>>” 表示。
这里写图片描述
算术右移可以实现的功能:右移n位实现乘以2^(-n)的功能。

猜你喜欢

转载自blog.csdn.net/asjbfjsb/article/details/80583055