目录

循环移位直接可用的函数(循环右移、循环左移)

整体代码

目录

循环移位直接可用的函数(循环右移、循环左移)

整体代码

本文的小技巧

注意的地方


本文的小技巧


实现对一个无符号数的循环左移和循环右移

循环移位直接可用的函数(循环右移、循环左移)

//val表示需要移位的数 n表示移位位数
//字节数乘以8代表一共多少位
//向右循环移n位的结果:假设数据一共size位,向左移size-n位,再与原数右移n位进行或操作的结果

//val表示需要移位的数 n表示移位位数
//字节数乘以8代表一共多少位
//向右循环移n位的结果:假设数据一共size位,向左移size-n位,再与原数右移n位进行或操作的结果
uint32 bit_move(uint32 val, int n) {uint32 size = sizeof(val) * 8;n = n % size;//return (val >> (size - n) | (val << n));//左移return (val << (size - n) | (val >> n));//右移
}

整体代码

如果出现头文件报错,去我主页搜关键词“bits/stdc++.h”

#include<bits/stdc++.h>using namespace std;typedef unsigned short int uint16;
typedef unsigned int uint32;uint32 bit_move(uint32 val, int n) {uint32 size = sizeof(val) * 8;n = n % size;//return (val >> (size - n) | (val << n));return (val << (size - n) | (val >> n));
}int main() {uint16 a;//cin >> hex >> a;scanf_s("%hd", &a);//16进制的两种输入方式 (这个地方如果是十进制输入,会栈溢出,为什么?)cout << "原始数据的二进制16位表示:  " << bitset<16>(a) << endl;uint32 a1 = (uint32)a;cout << "转换为32位后,右移之前的值:" << bitset<32>(a1) << endl;uint32 res = bit_move(a1, 2);cout << "右移2位后结果:             " << bitset<32>(res) << endl;//for (int i = 1; i < 3; i++) {//   a1 = bit_move(a1, 1);//    cout << "右移"<< i << "位后结果:           "<< bitset<32>(a1) << endl;//}return 0;
}

执行结果

2
原始数据的二进制16位表示:  0000000000000010
转换为32位后,右移之前的值:00000000000000000000000000000010
右移2位后结果:             10000000000000000000000000000000

本文的小技巧

输入16进制的方式

完整输入输出总结

cin >> hex >> a;
scanf_s("%hd", &a)

int型 输出x位二进制的方式

cout << bitset<32>(x) << endl;//如果输出64位,则填64

注意的地方

(这个地方如果是十进制输入,会栈溢出,为什么?因为定义在栈上的局部变量a为16位,如果按%d输入,则会占用32位,这样的话程序运行结束系统只会处理16位,剩下的16位就破坏了堆栈)

 uint16 a;//cin >> hex >> a;scanf_s("%hd", &a);//16进制的两种输入方式

C/C++实现循环左移,循环右移相关推荐

  1. java byte 循环左移 循环右移 rotateLeft rotateRight

    java byte 循环左移 循环右移 rotateLeft rotateRight 1.概念. 循环左移: eg1:byte in = (byte) 0x01;[0000 0001]则循环左移2位后 ...

  2. java循环左一_java实现循环左移和右移的简单算法

    java实现循环左移和右移的简单算法 byte a=112,用程序实现,将其循环左移三位和右移三位. 112的二进制原码:0111 0000 112循环左移3位后的二进制码:1000 0011 112 ...

  3. c语言循环左移程序,用C语言实现循环左移,右移

    C51中实现循环左移.右移的库函数: #includeunsigned char _crol_( unsigned char c, /*charactertorotateleft*/ unsigned ...

  4. 用python实现队列的循环左移和右移的实验原理_python的移位操作实现详解

    因为要将js的一个签名算法移植到python上,遇到一些麻烦. int无限宽度,不会溢出 算法中需要用到了32位int的溢出来参与运算,但是python的int是不会溢出的,达到界限后会自己转为lon ...

  5. 基础篇-verilog-实现循环左移右移

    //实现循环右移 reg [7:0] shifter; always(posedge clk ) begin shifter<={shifter[0],shifter[7:1]}; end // ...

  6. 一维数组反转c语言_C语言实现数组的循环左移,右移,翻转的示例

    数组结合指针可以实现很多有趣的功能,比如下面这个程序: 假设数组为 : 12345 如果左移一次即为:23451 ,依次类推 如果右移一次即为:51234 ,依次类推 翻转则为:54321 我们来实现 ...

  7. 逻辑左移、逻辑右移、算术左移、算术右移、循环左移、循环右移

    逻辑左移时,最高位丢失,最低位补0: 逻辑右移时,最高位补0,最低位丢失: 算术左移时,依次左移一位,尾部补0,最高的符号位保持不变. 算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一 ...

  8. 循环移位之循环左移和循环右移

    首先理解循环移位的意思:循环移位就是把数值变成二进制,然后循环移动的过程: 简单来说: 循环右移:二进制数的低位放到高位前面. 循环左移:二进制数的高位放到低位前面. 在Win32控制台应用程序中,整 ...

  9. 循环移位:循环左移和循环右移

    循环移位就是把数值变成二进制,然后循环移动的过程:换句话说,循环移位就是将移出的低位放到该数的高位(循环右移)或把移出的高位放到该数的低位(循环左移),左移,和右移动都是对整数进行的操作,在Win32 ...

  10. c语言循环左移程序,C语言中关于循环左移和循环右移

    昨天在解答同学的问题中,又接触了好久没碰的C中的位操作.在重接触的过程中,又理解了一遍计算机存储数据的细节,于是分享给大家看一下. 让我们先看一下题目:编写一个程序,输入两个整数i.j,如果j的值大于 ...

最新文章

  1. python的flask实现接口_使用python的Flask实现一个接口mock数据(傻瓜教程)
  2. 全能终端神器——MobaXterm
  3. c# 调用restful json_微服务调用为啥用RPC框架,http不更简单吗?
  4. 双 11 模块 79.34% 的代码是怎样智能生成的?
  5. 2022年数据库云管平台白皮书
  6. cannot import name UnrewindableBodyError
  7. shell数值运算的方法
  8. C#中的DES加解密方法
  9. 方维模板修改,发布分享、主题有商品时,标签需自动写到input里,不要再手动去点击添加,手动点击可取消...
  10. 线程的五大状态及转换
  11. 手机闪存速度排行_2020年手机性能排行榜前十
  12. [转]Spring 注解总结
  13. 计算机组成原理唐朔飞重点,计算机组成原理唐朔飞高分笔记
  14. (云苍穹)表单插件常用代码
  15. 状压DP——子集DP
  16. HDU 5857 Median(水~)
  17. IDM与其他下载器加速器优缺点介绍
  18. 【平衡二叉树】超市促销
  19. PLC控制系统的软件设计
  20. 以太网物理层IOP测试设备TESTBASE-EIOP

热门文章

  1. 建模杂谈系列142 关于MVD的思考
  2. php实现图片上传和显示,上传和显示图片 - php - 生活点滴
  3. 程序人生 - 提前冲线!10名浙江高中生不用高考,直接被清华大学录取,杭州4位学霸来自这些学校
  4. Docker 部署Halo
  5. Redis启动、配置 及 常用命令
  6. AURIX TC3xx Safety Mannaul
  7. 移动端(响应式布局--阿里百秀)
  8. 《教学综合管理系统》研究日志
  9. SM9学习笔记与图解——第1章 整体结构
  10. python快手虎年跳一跳辅助(点击版)