问题:从键盘输入一个整型数(int型),然后再输入一个正整数m,把第一个数循环右移m位后输出;

int类型占用32位。第一位为符号位,1则为负数,0为正数。

>>往右移动,右边的丢弃,如果是正数,则左边补0,如果是负数则补1.

<<往左移动,每次移动补0

循环右移指的是移动到右边的不丢弃,而是在第一位出现。循环

负数的循环右移思想是往左移动32-x位。(x表示要右移的位数),因为要往左移,所以补0.又负数其他位都为1,故生成32-x个1与左移自动补的0进行|运算,目的是让补的位置为1,相关代码如下:

int number,index; //number:要进行右移的数字,index表示移动的位数scanf("%d%d",&number,&index);if(number >= 0){printf("%d",((number&((0<<9)+(int)pow(2, index)-1))<<index)+(number>>index));}else{printf("%d",(number << (32-index))|((int)pow(2, 32-index)-1));}

============================================================================

今天发现了更简单的方法
printf("right move: %d\n",number>>index|(number<<(32-index)));
printf("left move: %d",number << index | (number << (32 - index)));

把x的第m位(从0开始)到第n位取反

(~(x >> m)&((int)pow(2,(n-m+1))-1))<<m|(x & ((int)pow(2,(n-m+1))-1)));

C语言正数和负数循环右移,左移,把某正数的第m位(从0开始)到n位取反相关推荐

  1. c语言将数组元素循环右移k位,把一个含有N个元素的数组循环右移K位

    普通解法: 可以每次将数组中的元素右移一位,循环K次.每个元素右移N位后都会回到自己的位置上.因此,如果K > N,右移K-N之后的数组序列跟右移K位的结果是一样的.进而可得出一条通用的规律:右 ...

  2. c语言将数组元素循环右移3位,如何将一个数组的元素循环左移?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define SIZE(a) (sizeof(a)/sizeof(a[0])) #define HBIT(a) (( ...

  3. 正数、负数、和小数正则表达式 ios_【3-17】使用正则表达式去掉字符串间的各种符号...

    Hello,大家好,我是大家最亲爱的siki老师,每天都会在这里为大家带来一个Java语法中有趣的知识点,Q群175158287,欢迎同大家多多交流哈! 今天给大家带来的使用正则表达式做的一个小dem ...

  4. python判断正数和负数教案_正数和负数优秀教案

    1 / 4 2.1 正数和负数 一.背景知识 <正数和负数>是<数学>七年级上册第二章<有理数>中的第一节,这一章是开 启整个初中阶段代数学习的大门. 本节内容让学 ...

  5. C#整数(包括正数和负数)与十六进制byte[]的互相转换(两字节)

    我写代码的时候要用到,但是搜了很多感觉不是很齐全,所以写出来供大家参考. 十六进制byte[]转整数(包括正数和负数): byte[] a = new byte[2]; a[0] = 0x00; a[ ...

  6. 正数、负数、和小数正则表达式 ios_最常用正则表达式,你要的都在这里了

    1 很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以最近L君把开发中常用的一些正则表达式整理了一下,在这里分享一下.可以给朋友们做个参考. 2 ...

  7. c语言负数左移右移_C语言中关于循环左移和循环右移

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

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

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

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

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

最新文章

  1. 前缀和 + ST表 ---- CF 1556 E. Equilibrium(两个序列 + - 操作使得每位相等) 详解
  2. 使用VS Code新建编译Flutter项目
  3. RxJava 和 RxAndroid 一 (基础)
  4. 物联网管理软件的设计
  5. 生产环境常见的HTTP状态码列表
  6. 初级软件工程师的成长
  7. 如何用Veripacks替换构建模块
  8. 病毒的手工排除与分析(更新完毕)
  9. 想学习UI设计,培训的话需要多少钱?
  10. 基于Tight VNC的远程协助功能的实现
  11. 计算机专业专转本题目(新考纲)
  12. 借助Bodymovin播放svg动画
  13. win7开机突然变得很慢_Win7电脑反应变慢怎么办?
  14. 正则解决大写金额转换
  15. 使用kaminari实现分页
  16. 双旦七大行业营销活动方案
  17. 【Axure】实例:微信登录
  18. 网络安全行业有哪些认可度比较高的证书呢?
  19. 矩阵论 - 6 - 列空间、零空间
  20. web前端学习笔记26-事件类型——一般事件、页面事件、表单事件

热门文章

  1. 《电脑报2014年》更新至第51期
  2. Ubuntu安装pcb制图工具
  3. 软件测试·系统测试·安全性测试
  4. MVC框架的简单描述
  5. 何为全屋智能?华为用实力告诉你们:全屋智能是如此好用
  6. PRD文档和交互文档(DRD)有什么区别
  7. 我这两年提升技术的经历和感受(舒适区危机篇)
  8. 网站面包屑导航对SEO优化重要性
  9. 医院客户关系管理/医院随访/CRM/HCRM
  10. 计算机等级考试题和答案,全国计算机等级考试试题和答案..doc