定点数的运算

本文详细介绍了移位运算的三种类型:算数移位、逻辑移位和循环移位。算数移位中,正数左移乘以基数,右移除以基数,符号位不变;负数移位时,补码规则复杂,可能导致误差或精度丢失。逻辑移位不考虑符号,仅用0填充空位。循环移位则将移出的位重新插入数据中,可以带或不带进位标志位。这些运算在计算机科学和编程中有着广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定点数的移位运算

算数移位

左移一位相当与*基数,右移一位相当于/基数。(e.g.二进制:左移乘以2,右移除以2)
移位后符号不变
正数(符号位为0),[x]=[x]=[x]=真值,移位后出现的空位均以0添之。
以下均为负数空位填补规则
原码添0,(定点小数同理)左移,低位补0,若舍弃位!=0,出现严重误差;右移,高位补0,若舍弃位!=0,丢失精度
补码左添0,右添1左移同反码,右移同原码
负数补码=反码末位+1
负数补码中,最右边及其右边同原码,最右边的1的左边同反码
反码添1
除符号位均与原码相反,移位后所添代码也应与原码相反
移位

逻辑移位

无符号数:左移高位移丢,地位添0;右移低位移丢,高位添0

循环移位

移除的数位又被移入数据中,而是否带进位则要看是否将进位标志位加入循环位移
应用于低字节和高字节数据转换

  • 带进位标志位CF(大循环):移出的位放到进位位上,原进位位补上空缺。
  • 不带进位标志位CF(小循环):用移出的位补上空缺
  • 循环位移
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值