练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
来源:互联网 发布:ps4全境封锁网络优化 编辑:程序博客网 时间:2024/05/16 04:31
这个题目呢,首先需要确定数据类型,在这里我选择的数据类型是unsigned类型,具体实现方法很简单,先得到unsigned类型数据的长度len,然后将x的后n位提取出来,左移len-n位得到end,然后将x右移三位得到top,最后将end和top进行或运算即可。为了方便显示结果,在这里我增加了一个显示将十进制数进行二进制显示的一个函数dtob()。
通过程序可知unsigned类型数据为32位。
#include<stdio.h>#include <stdlib.h>void dtob(unsigned int);//将十进制数换成二进制数示出unsigned int rightrot(unsigned x,int n);int len();//用于获得unsigned类型数据的长度int main() { unsigned int x=15; int n=2; dtob(x); x=rightrot(x,n); dtob(x); return 0;}unsigned int rightrot(unsigned x,int n){ int length=len(); unsigned end,top; end=x>>n; top=(x&(~(~0<<n)))<<(length-n); return end|top;}void dtob(unsigned int ten) { int two[100]; unsigned int shang = ten; int yu; int i = 0; while (shang != 0) { yu = shang % 2; shang = shang / 2; two[i++] = yu; } for (int j = i - 1; j >= 0; --j) { printf("%d", two[j]); } printf("\n");}int len(){ unsigned i=1; int len=0; while(i!=0){ ++len; i=i<<1; } return len;}
程序执行结果如下所示:
阅读全文
0 0
- 练习2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端再移入)n(二进制)位后所得到的值。
- 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
- 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
- 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
- 2.8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端再移入)n(二进制)位后所得到的值。
- 2.8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端再移入)n(二进制)位后所得到的值。
- 练习2-8 编写一个函数rightrot(x,n),该函数返回将x循环右移n(二进制)位后所得到的值
- /将x循环右移n位(从最右端移出的位从最左端移入)
- 编写一个函数rightbot(x,n),该函数返回将X循环右移n(二进制)为后所得的值
- 练习 2-6 编写一个函数setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- 练习 2-6 编写一个函数 setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- 练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- 练习2-6 编写一个函数setbits(x,p,n,y),将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值
- 练习 2-7 编写一个函数invert(x, p, n),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位求反(即,1变成0,0变成1),x的其余各位保持不变。
- 练习2-7 编写一个函数invert(x,p,n),该函数返回对x执行下列操作后的结果:将x从第p位开始的n个(二进制)位求反(即1变成0,0变成1),x的其余各位保持不变。
- 练习 2-7 编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结 果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各位保持不变。
- 2.6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- 关于编写一个函数invert(x,p,n),返回x循环右移n位后得到的值,the c programming language 第二章练习2-8
- c++ 最小生成树——Prim和Kruskal理解与分析
- Java 面试题(一)
- npm 命令
- 最小生成树Prim算法理解
- Prim算法和Kruskal算法
- 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
- 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
- 练习2-10 重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。
- ThinkPHP3.2使用addAll()方法批量插入数据
- 最短路算法
- 2017"百度之星"程序设计大赛
- [Leetcode]295. Find Median from Data Stream
- python学习之路Day3
- JAVA企业面试题精选 Web基础 11-20