华中科技大学计算机系统基础实验3报告,华中科技大学计算机系统基础实验报告.docx...

本篇实验报告详细介绍了在C语言环境下,通过位操作、补码运算和浮点数操作来深入理解计算机中整数和浮点数的二进制编码表示。涉及的功能包括设置LSB、字节取反、字节异或、逻辑运算和浮点数乘除等,通过解决编程挑战提升对数据编码的理解。
摘要由CSDN通过智能技术生成

文档介绍:

课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:2016年5月24日计算机科学与技术学院目录实验1: 2实验2: 9实验3: 22实验总结 30 实验1:数据表示1.1实验概述本实验的目的是更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。实验中,你需要解开一系列编程“难题”——使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中你将加深对数据二进制编码表示的了解。实验语言:c;实验环境:linux1.2实验内容需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。1.3实验设计源码如下:/**lsbZero-set0totheleastsignificantbitofx*Example:lsbZero(0x)=0x*Legalops:!~&^|+<<>>*Maxops:5*Rating:1*/intlsbZero(intx){//x右移一位再左移一位实现把最低有效位置0x=x>>1;x=x<<1;returnx;}/**byteNot-bit-inversiontobytenfromwordx*Bytesnumberedfrom0(LSB)to3(MSB)*Examples:getByteNot(0x,1)=0x1234A978*Legalops:!~&^|+<<>>*Maxops:6*Rating:2*/intbyteNot(intx,intn){//x第n个字节每位都和1异或实现取反inty=0xff;n=n<<3;y=y<>*Maxops:20*Rating:2*/intbyteXor(intx,inty,intn){//把x和y的第n个字节取出来异或,再转换为逻辑的0和1n=n<<3;x=x>>n;y=y>>n;x=x&(0xff);y=y&(0xff);return!!(x^y);}/**logicalAnd-x&&y*Legalops:!~&^|+<<>>*Maxops:20*Rating:3*/intlogicalAnd(intx,inty){//把x和y分别转化为逻辑的0和1,再相与x=(!(!x))&(!(!y));returnx;}/**logicalOr-x||y*Legalops:!~&^|+<<>>*Maxops:20*Rating:3*/intlogicalOr(intx,inty){//把x和y分别转化为逻辑的0和1,再相或x=(!(!x))|(!(!y));returnx;}/**rotateLeft-Rotatextotheleftbyn*Canassumethat0<=n<=31*Examples:rotateLeft(0x,4)=0x*Legalops:~&^|+<<>>!*Maxops:25*Rating:3*/introtateLeft(intx,intn){//先构造低n位为1,高(32-n)位为0的数z,x左移n位后的数加上x右移(32-n)位的数&z即可intz;z=~(((1<<31)>>31)<>(32+(~n+1)))&z)+(x<>*Maxops:20*Rating:4*/intparityCheck(intx){//每次将数的低半数位与高半数位比较,再把y右移31位,最后把y转化为逻辑的0和1inty;y=x<<16;y=y^x;y=y^(y<<8);y=y^(y<<4);y=y^(y<<2);y=y^(y<<1);y=y>>31;return!(!y);}/**mul2OK-pute2*xwithoutoverflow*Examples:mul2OK(0x)=1*mul2OK(0x)=0**Legalops:~&^|+<<>>*Maxops:20*Rating:2*/intmul2OK(intx){//把x第31位和30位分别和1做按位与,再异或,再和1异或intm;m=((x>>31)&0x1)^((x>>30)&0x1);returnm^0x1;}/**mult3div2-multipliesby3/2roundingtoward0,*Shoul

内容来自淘豆网www.taodocs.com转载请标明出处.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值