C语言正数和负数循环右移,左移,把某正数的第m位(从0开始)到n位取反
问题:从键盘输入一个整型数(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位取反相关推荐
- c语言将数组元素循环右移k位,把一个含有N个元素的数组循环右移K位
普通解法: 可以每次将数组中的元素右移一位,循环K次.每个元素右移N位后都会回到自己的位置上.因此,如果K > N,右移K-N之后的数组序列跟右移K位的结果是一样的.进而可得出一条通用的规律:右 ...
- c语言将数组元素循环右移3位,如何将一个数组的元素循环左移?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define SIZE(a) (sizeof(a)/sizeof(a[0])) #define HBIT(a) (( ...
- 正数、负数、和小数正则表达式 ios_【3-17】使用正则表达式去掉字符串间的各种符号...
Hello,大家好,我是大家最亲爱的siki老师,每天都会在这里为大家带来一个Java语法中有趣的知识点,Q群175158287,欢迎同大家多多交流哈! 今天给大家带来的使用正则表达式做的一个小dem ...
- python判断正数和负数教案_正数和负数优秀教案
1 / 4 2.1 正数和负数 一.背景知识 <正数和负数>是<数学>七年级上册第二章<有理数>中的第一节,这一章是开 启整个初中阶段代数学习的大门. 本节内容让学 ...
- C#整数(包括正数和负数)与十六进制byte[]的互相转换(两字节)
我写代码的时候要用到,但是搜了很多感觉不是很齐全,所以写出来供大家参考. 十六进制byte[]转整数(包括正数和负数): byte[] a = new byte[2]; a[0] = 0x00; a[ ...
- 正数、负数、和小数正则表达式 ios_最常用正则表达式,你要的都在这里了
1 很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以最近L君把开发中常用的一些正则表达式整理了一下,在这里分享一下.可以给朋友们做个参考. 2 ...
- c语言负数左移右移_C语言中关于循环左移和循环右移
昨天在解答同学的问题中,又接触了好久没碰的C中的位操作.在重接触的过程中,又理解了一遍计算机存储数据的细节,于是分享给大家看一下. 让我们先看一下题目:编写一个程序,输入两个整数i.j,如果j的值大于 ...
- 一维数组反转c语言_C语言实现数组的循环左移,右移,翻转的示例
数组结合指针可以实现很多有趣的功能,比如下面这个程序: 假设数组为 : 12345 如果左移一次即为:23451 ,依次类推 如果右移一次即为:51234 ,依次类推 翻转则为:54321 我们来实现 ...
- c语言循环左移程序,C语言中关于循环左移和循环右移
昨天在解答同学的问题中,又接触了好久没碰的C中的位操作.在重接触的过程中,又理解了一遍计算机存储数据的细节,于是分享给大家看一下. 让我们先看一下题目:编写一个程序,输入两个整数i.j,如果j的值大于 ...
最新文章
- 前缀和 + ST表 ---- CF 1556 E. Equilibrium(两个序列 + - 操作使得每位相等) 详解
- 使用VS Code新建编译Flutter项目
- RxJava 和 RxAndroid 一 (基础)
- 物联网管理软件的设计
- 生产环境常见的HTTP状态码列表
- 初级软件工程师的成长
- 如何用Veripacks替换构建模块
- 病毒的手工排除与分析(更新完毕)
- 想学习UI设计,培训的话需要多少钱?
- 基于Tight VNC的远程协助功能的实现
- 计算机专业专转本题目(新考纲)
- 借助Bodymovin播放svg动画
- win7开机突然变得很慢_Win7电脑反应变慢怎么办?
- 正则解决大写金额转换
- 使用kaminari实现分页
- 双旦七大行业营销活动方案
- 【Axure】实例:微信登录
- 网络安全行业有哪些认可度比较高的证书呢?
- 矩阵论 - 6 - 列空间、零空间
- web前端学习笔记26-事件类型——一般事件、页面事件、表单事件