网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机系统基础实验总结2023(已满绩点4.1).docx

计算机系统基础实验总结2023(已满绩点4.1).docx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

计算机系统基础实验总结

计算机学院

计算机学院计算机类

院系:学号:姓名:

成绩:

LAB1

实验概述

Lab1数据表示,需要我们在32位Linux虚拟机上使用有限种类的运算符(按位取反,逻辑与,或,非等),并尽可能的精简步骤来补充bits.c中的函数内容,以实现规定的函数功能。函数补充完成后可输入特定指令提交评阅。bits.c中的函数分为位操作函数,补码运算函数,浮点数表示函数几类,完成实验以掌握各种数据类型在计算机中的表示方法,与C语言数据类型的位级表示及操作。

实验收获总结

在对lab1中十五个位运算函数的补充过程中,我初步了解了Linux系统的一些命令和操作,也加深了位的表示,二进制补码运算,浮点数IEEE754表示等方面的理解。这次试验对我的理论课学习有很大帮助,更引起了我在学习理论与实验课的兴趣。在之后的实验和学习中我希望能学习到更多的有关计算机系统的知识并加以实践应用。

具体题目分析

bitOr(只利用~和操作,将数x和y相或)括号内为题目翻译

思路:由德摩根定律可知,取或,等价于将两个数的取反值~x,~y相与后,再取反。

代码:intbitOr(intx,inty){

return~((~x)(~y));

}

evenBits(返回值为所有位均是1的数)

思路:所有位均为一,即0即将0x55左移八位,再左移十六位。

代码:intevenBits(void){

inta=0x558|0x55;

returna16|a;}

isTmin(判断一个数x是否是int型最小值?)

思路:int型最小值(补码是0有性质:tmin+tmin=0.所以tmin=~tmin+1.

但是要特判去掉同样满足的0。

代码:intisTmin(intx){

return!(x+x)!!(x);

}

4.allEvenBits(判断一个二进制数偶数位是否全为1)

思路:若一个二进制数偶数位为1,奇数位为0,则这个数为0

先将x=x0将这个数奇数为变为0,之后x^0断该数是否为0

代码:intallEvenBits(intx){

inty=0x55;

y|=y8;

y|=y16;

x=y;

return!(x^y);

}

5.anyEvenBit(判断一个二进制数任意偶数位是否有1)

思路:判断偶数位是否含有1,只需要将所有偶数位与1相与,奇数位与0相与。若结果为0,则偶数位没有1。

代码:intanyEvenBit(intx){

intmask=0x55|0x558;

mask=mask|mask16;

return!!(xmask);}

6.fitsBits(判断x是否能用n位补码表示)

思路:判断其[n+1,3]区间上的数是否全为1,或0,即可。

所有数位都为0,即判断!x是否为1。

判断一个数都为1,只需要将这个数取反~x,判断取反之后是否为0便可。

代码:intfitsBits(intx,intn){

inta=n+31;

intb=x31;

x=xa;

x=x^b;

return!x;

}

7.float_neg(浮点数取反)

思路:取反即可,但需判断是否为NaN(if判断)。若是NaN数,返回原值,否则返回原数符号位取反对应的数

代码:unsignedfloat_neg(unsigneduf){

inttmp=0,ret=0;

ret=uf^0//signreverse

tmp=uf0x7fffffff;//

if(tmp0x7f800000)//NaN

ret=uf;

returnret;

}

8.isAsciiDigit(判断x是否可以是表示数字的Ascii码)

思路:判断x是否满足0x30=x=0x39,若满足,返回1。

代码:intisAsciiDigit(intx){

intis_upper=!((x~0x0F)^0x30);

intis_lower=!((x0x0F)+

文档评论(0)

暗伤 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档