循环移位、逻辑移位与算术移位的相关知识点

本文针对循环移位、逻辑移位和算术移位进行探讨,适合已掌握位运算基础知识并希望深入理解的读者。文章通过C++和Python示例,详细解释了循环位移的实现,并指出Python中因数据宽度自动扩大带来的挑战。
摘要由CSDN通过智能技术生成

文章背景

谷歌搜索"循环移位"以及"逻辑移位和算术移位"这两个关键字得到的前三篇文章实在是纰漏过多
于是笔者改为搜索"arithmetic shift and logical shift stackoverflow",得到的前三篇文章完美解决了笔者的所有问题,故记录如下
题主水平有限,如有纰漏,请斧正,我会第一时间修改(本账号长期更新)

本文受众

  • 对位运算已有基础的了解,苦于位运算进阶的读者
    • 尤其是位运算逆向方面
  • 对循环位移及循环位移的变式题型较为不解的读者

正文

循环位移

先看下方原理图

在这里插入图片描述
可以看到,经过循环左移的高位数据不会被丢弃,而是会被补充至数据低位;

同样的,经过循环右移的低位数据不会被丢弃,而是会补充至数据的高位。

对于左移而言,使用或运算将原本应当被舍弃的数据,填补在原本应当补0的低位上

对于右移而言,使用或运算将原本应当被舍弃的数据,填补在原本应当补符号位的高位上

以下示例以循环左移为主

Talk is cheap,show me the codes.

类C语言的循环位移

类C语言的数据宽度可以人为控制,因此较容易实现循环位移

请看下方的实现代码(C++环境下)



#include<iostream>
using namespace std;
int main() {
   
	cout << "this is Lsh program";
	unsigned
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值