详解计算机中的移位运算 移位运算是位运算的一种,用于对二进制数中的每一位向一个方向移动指定位,溢出部分被舍弃,空缺部分填充相应的位。移位运算可分为算术移位、逻辑移位和循环移位。
算术移位 算术移位的对象是有符号数,也称为有符号移位。移位过程中符号位保持不变。 对于正数,原码、补码和反码的算术移位的结果相同,移位后出现的空位均以 填充。对于负数,由于原码、补码和反码的表示形式不同,移位后对空位的填充规则也不会相同。负数的原码数值部分与真值相同,故在移位时只要使符号位不变,其空位均补 。负数的反码各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添 1。补码由低位向高位找到第一个 时,此 左边的各位与对应反码相同,而右边的各位与对应原码相同。故负数补码左移时,出现空位补 ;右移时出现的空位补 。 逻辑移位 逻辑移位的对象视为无符号数,也称为无符号移位。移位的结果不考虑符号位,左移时,高位移丢,低位补 ;右移时,低位移丢,高位补 。 如上所示,左移使用C语言中的 操作符表示,右移使用 C 语言中的 操作符表示, 左移 位得到 ; 右移 位得到 。 循环移位 循环移位分为带进位标志位 的循环移位和不带进位标志位的循环移位,过程如下图所示。
循环移位是将移出的数位再移入数据中,是否带进位标志位 则看是否将进位标志位加入循环位移。例如,带进位位的循环左移就是数据位连同进位标志位一起左移,数据的最高位移入进位标志位 ,而进位位则依次移入数据的最低位。 循环移位适合将数据的低字节数据和高字节数据互换。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/81557.html