区分算术移动和逻辑移动

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

区分算术移位和逻辑移位
从运算符本身是区分不了算术移位还是逻辑移位,因为它们的运算符号都是<<,>>,实际上取决于操作数的类型。如果操作数是无符号数即是逻辑移位,如果操作数是带符号数,是算术移位。

1.逻辑移位
操作对象: 二进制无符号数,例如像地址。
(1)逻辑右移
特点:高位补0,低位移出。
(2)逻辑左移
特点:低位补0,高位移出。
问题探究:什么时候会发生溢出?如何判断溢出?
如果高位移出的是一,则左移发生溢出。

2.算术移位
操作对象: 二进制有符号数,现代计算机中有符号数字使用补码表示。由于计算机不能识别正负号,而0和1恰好可以表示这两种状态。这样就将符号数字化了。
问题探究:什么时候会发生溢出?如何判断溢出?
算术左移溢出判断:如果移出的位不等于新的符号位,则溢出。
算术右移不会发生溢出,但是如果移出的低位不为0,则可能发生数据丢失的的情况。

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

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值