2.63-将下面的C函数代码补充完整。函数srl用算术右移(由值xsra给出)来完成逻辑右移,后面的其他操作不包括右移或者除法。
接题目:
函数sra用逻辑右移(由值xsrl给出)来完成算术右移,后面的其他操作不包括右移或者除法。可以通过计算8*sizeof(int)来确定数据类型int中的位数w。位移量k的取值范围为0~w-1。
unsigned srl(unsigned x, int k) {/* Perform shift arithmatically */unsigned xsra = (int)x >> k;...
}int sra(int x, int k) {/* Perform shift logically */int xsrl = (unsigned)x >> k;...
}
答案
#include <stdio.h>
#include <assert.h>unsigned srl(unsigned x, int k) { unsigned xsra = (int)x >> k; int w = sizeof(int) << 3; int mask = (int)-1 << (w - k); return xsra & ~mask;
}int sra(int x, int k) {int xsrl = (unsigned)x >> k; int w = sizeof(int) << 3;int mask = (int)-1 << (w - k); //let mask remain unchanged when the first bit of x is 1, otherwise 0. int m = 1 << (w - 1); mask &= ! (x & m) - 1; return xsrl | mask;
}int main(int argc, char* argv[]) {unsigned test_unsigned = 0x12345678; int test_int = 0x12345678; assert(srl(test_unsigned, 4) == test_unsigned >> 4);assert(sra(test_int, 4) == test_int >> 4);test_unsigned = 0x87654321; test_int = 0x87654321; assert(srl(test_unsigned, 4) == test_unsigned >> 4); assert(sra(test_int, 4) == test_int >> 4);return 0;
}
2.63-将下面的C函数代码补充完整。函数srl用算术右移(由值xsra给出)来完成逻辑右移,后面的其他操作不包括右移或者除法。相关推荐
- 现我们数据库中已有的一张新闻表news,结构如下:根据表结构我们创建一个News对象:将下面代码补充完整,完成数据库连接、删除、更新以及查找方法。其中删除方法是通过用户传入新闻id来进行删除。
现我们数据库中已有的一张新闻表news,结构如下:根据表结构我们创建一个News对象:将下面代码补充完整,完成数据库连接.删除.更新以及查找方法.其中删除方法是通过用户传入新闻id来进行删除 题目 1 ...
- python函数代码,这个python函数代码如何工作?
这个with_default_value函数经常被称为(不精确地)为"闭包"(技术上,闭包是返回的内部函数,这里是newfunc – 参见例如 here).更一般地说,with_d ...
- c语言代码查错软件,Ubuntu下面的C语言代码检查工具 Splint
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 看一下下面的代码(当然包括错误,以检验splint的功能): #include int main(int argc,char* argv[]){ int ...
- php可变函数代码,PHP可变函数
PHP支持可变函数的概念.通常用在回调函数.函数列表或者根据动态参数来调用不同的函数. 那么如何使用呢? #定义三个函数 function apple() { echo "I'm an ap ...
- php系统函数代码,PHP自定义函数+系统函数库(代码示例)
全局变量$n = 5; //全局变量 function fun1(){ global $n; echo '我在函数体内也可以调用全局变量n,它的值是:' , $n;//5 $n++; } fun1() ...
- php分页函数代码,PHP分页函数代码分享
//$count为总条目数,$page为当前页码,$page_size为每页显示条目数 function show_page($count,$page,$page_size) { $page_coun ...
- c++某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。
#include using namespace std; //请在此处添加代码 int cut(float x, float y) { float max; max = (x > y) ? x ...
- python count函数代码_python count函数用法详解_后端开发
fgetc函数的作用详解_后端开发 fgetc函数的作用是从指定文件读入一个字符,要求文件的打开方式必须是以读或读写的方式或者追加的方 式,只写方式是不能读的. 在python中可以使用"c ...
- python max函数代码_Python Max函数
当列表中的项目不是同一类型时,max函数如何工作? 例如,以下代码返回[1,'3′] max([1,52,53],[1,'3']) => [1,'3'] 解决方法: 在Python2中,不同类型 ...
最新文章
- AI 的十种 “新数学”
- 参加51CTO学院软考培训,我通过啦!
- 一周一论文(翻译)——[VLDB 18] Chi:分布式流处理系统下可扩展的、可编程的控制计划模块
- 线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这
- curl 发送带有Authorization的post请求命令
- g30u盘启动 中科曙光1620_I620-G30
- oracle主备不同步,主备环境下数据不一致重新部署复制
- 【OpenCV】图像线性混合
- SpringBoot系列六:SpringBoot整合Tomcat
- java排序之选择排序
- 商业创业计划书ppt你的绝佳选择
- 扫雷小游戏 纯C语言/C++开发分享成果和记录
- python xgboost建模过程_机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义...
- 系统启动故障恢复控制台应用实例
- The-Swift-2.0-Programming-Language-playground
- 读书笔记-财务报表分析的目的
- MicroSoft Visual Studio 2013 社区版下载地址
- Win7防火墙允许ping
- mysql字段值是什么_什么是数据库字段值
- 多少达芬奇发明实际起作用
热门文章
- 视频码率,帧率和分辨率
- Attempted read from closed stream
- 微软的现实困难:产品需要再次变“酷”
- 初三毕业班主任压力过大割喉自尽
- 【Vue】Emitted value instead of an instance of Error
- 零基础自学画画的方法有哪些
- 策略模式、观察者模式、状态模式原理及实例
- android白色暗色主题,使用Kotlin开发Android应用(12) - Dark theme 暗色主题
- dede模板加入php无法生成栏目,织梦后台更新后栏目无法生成,怎么办?
- 杂谈||Python实现计算含保底抽卡出金期望