




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序总结范文 C C程序问题1.abs()1.abs()、fabs()函数取绝对值abs()abs()与与fabs()函数都是去决定值函数,其区别为1.1abs()1.1abs()函数接受一个整型的参数,并以t Int值得形式返回这个参数的绝对值。 1.2fabs()1.2fabs()函数接受e double类型的参数,并以e double。 值的形式返回这个参数的绝对值。 1.3abs()1.3abs()函数的函数原型位于头文件h stdllib.h中。 1.4fabs()1.4fabs()函数的函数原型位于头文件h math.h中。 2.#include2.#include库文件Limts.h Limts.h库文件专门用于检测整形数据类型的表达值范围例UINT_MAX:4294967295UINT_MAX:4294967295或65535表表unsigned int十进制的最大值。 3.3.原码、反码、补码原码如果机器字长为n,那么一个数的原码就是一个n n位字长的二进制有符号数,最高位为符号位,正数为 00、负数为11。 剩下的1n-1位为数值位,表示真值的绝对值。 不足1n-1位的,小数在最低位右边加零;整数则在最高位左边加零用于补足n-1位。 例5+5.+5是正数,最高位为0如果5+5是是t int类型的数据,则可知t int在机器中占有44个字节,共计232个个t bit位,0bit0至至bit31.则+5的原码为00000000000000000000000000000101-5.-500000000000000000000000000000101-5.-5是负数,最高位为1如果5-5是是t int类型的数据,则可知t int在机器中占有44个字节,共计232个个t bit位,0bit0至至bit31.则5-5的原码为10000000000000000000000000000101.10000000000000000000000000000101.但是00的原码有两种,因00有+0和-0之分。 如果为-0且数据类型为t int型。 则其原码为10000000000000000000000000000000如果为+0且数据类型为t int型则其原码为00000000000000000000000000000000原码的优缺点 11、简单易懂 22、加减运算复杂 33、存在加减乘除四种运算,增加了U CPU的复杂度 44、零的表示不唯一注对原码缺点的描述二进制中减法可以当做加法运算比如2-3?2+(-3)1.对于加减运算用原码表示为例23运算数据类型为r char型。 2.2.可知char类型占有11个字节共88位,则2的原码为00000010。 33的原码为10000011.3.10000011.3.则则23运算用二进制表示为00000010+100000114.00000010+100000114.结果为10000101按照原码来计算为-5这显然不对利用补码进行运算 11、22的补码为00000010-3的补码为11111101。 23所得的补码为 111111112111111112、11111111二进制显示为负值按照转换原则补码转原码补码取反加11得10000001=-1.10000001=-1.由补码和原码的上述计算可知,原码在某些场合不能直接进行加减运算,这无疑增加了原码的运算复杂度。 由补码和原码的上述计算可知,原码在某些场合不能直接进行加减运算,这无疑增加了原码的运算复杂度。 反码。 反码就是在原码的基础上进行取反操作,需要注意的是在进行取反时符号位是不变的。 例r char型数据+5的原码为00000101则其反码为01111010Char01111010Char型数据-5的原码为10000101则其反码为11111010注计算机不使用反码的原因还是上述例子23。 我们知道计算机的U CPU中只有加法器没有减法器,323实际上可以表示成实际上可以表示成2+(-3)1.1.2的原码为00000010其对应的反码为000000102.000000102.-3的原码为10000011其对应的反码为111111003.111111003.2-3=00000010+11111100=111111104.2-3=00000010+11111100=111111104.取反为10000001对应为-1是正确的5.5.但是为什么不使用反码,而使用补码呢如下6.6.当运行1-1运算时可知00000001(11的反码)+11111110(1-1的反码)=111111117.=111111117.从上面我们可以看到11111111取反为100000000这是有问题的8.8.问题出现在+0和-0身上。 计算机概念中是没有正零和负零之分的。 9.9.于是就有了补码1-1利用补码计算如下00000001+11111111=00000000运算规则正零0000000000000000负零1000000010000000这两个数其实都是00,但他们的原码却有不同的表示。 但是他们的补码是一样的,都是0000000000000000特别注意,如果1+1)之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)1000000010000000补=10000000=10000000反+1=11111111+1= (1)00000000=00000000(+1=11111111+1= (1)00000000=00000000(最高位溢出了,符号位变成了00)所以补码的设计目的是使符号位能与效值部分一起参加运算,从而简化运算规则。 补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,可以正常地参与运算。 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。 所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、c c。 等其他高级语言中使用的都是原码。 补码定义补码顾名思义是在原码取反的基础上进行加11处理。 所得到的数即为补码原码转补码1.1.正数的原码、反码、补码是一致的2.2.负数的补码为原码取反后所变成的反码加11,取反时符号位不变3.3.例例-1的求解过程1的原码为00000001则-1的原码为10000001取反后为1111111011111110加加1后所得的补码为11111111补码转成原码正整数补码和它的原码反码相同,负整数补码转成原码有两种方式如下方式1补码取反,取反所有的位数包括符号位,所得的二进制加加1即为所得负数的绝对值。 即为所得负数的绝对值。 例-1的补码为11111111取反后为00000000加加1为00000001=1即为所得数的绝对值即为所得数的绝对值方式2补码取反所得的值减11,此取反符号位不变例-1的补码为11111111取反后为10000000对应的值为-0,-0-1=-1.原码转换成补码1.1.正整数的原码、反码补码相同按照正常的除22取余方式来做2.2.加负数先求对应的正整数的二进制代码,然后将二进制代码取反,末位加1,如果不够位数,如果不够位数左边补1.例t int类型-1求补码1.11.1的原码为0001取反为1110,加11为1111因1-1为t int类型数据占有232位按照规则左边补按照规则左边补1为1111111111111111111111111111此为t int类型1-1的补码注char类型中-128没有原码反码只有补码10000000100000001000000010000000转换成十进制方式11来转10000000取反(包括符号位)01111111加加1为10000000=128按照方式按照方式1绝对值为128则所得值为-128方式22来转10000000取反(不包括符号位)11111111=-127减减1-128.移码移码(又叫增码)是符号位(仅符号位)取反的补码,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零全为,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零全为0.定义设由11位符号位和n n位数值位组成的阶码,则则X移=2En+X-2nX2n。 移码与补码的关系X移与X补的关系是符号位互为相反数(仅符号位不同),则X移=2En+X-2nX2n。 移码与补码的关系X移与X补的关系是符号位互为相反数(仅符号位不同),例如X=+1011X补=01011X移=11011X=-1011X补=10101X移=00101例如二进制数11010100是负数=-26-24-22=-64-16-4=-84X原=11010100符号位不变,原码的其他位按位取反XX反=10101011补码在反码的基础上按照正常的加法运算加1X1X补=10101100移码不论正负,将其补码的符号位取反即可XX移=00101100对移码运算的结果需要加以修正,修正量为22的的n n次方(n n为二进制所占的位数),即对结果的符号位取反后才是移码形式的正确结果。 通过移码以及修正量可得原码数。 例如,即对结果的符号位取反后才是移码形式的正确结果。 通过移码以及修正量可得原码数。 例如4-84的移码00101100的修正量为22的的88次方为128,则原码为00101100-128=44-128=-84.00101100-128=44-128=-84.修正量也叫偏移量。 移码一般用做浮点数的阶码,但是在浮点数运算时,88位数据的阶码的偏移量却不是8128而是而是127,具体原因参见浮点数。 浮点数浮点数的格式1)按IEEE754标准组成的32位数。 IEEE754标准短浮点数格式参数结构如下短浮点数和有符号整型一样,符号位是1,表示负数;符号位是0,表示正数。 指数位部分既可表示正指数又可表示负指数。 因此,指数位部分通过实际指数值加上偏差值127的方法计算。 例如实际指数值为-15,该浮点数的指数位值是112。 由于偏差值的作用,实际指数值的有效范围为-127到128。 有效位表示标准二进制数值的分数部分。 标准二进制数值大于1小于10并包含小数部分。 小数部分很重要,因此被包含在浮点数格式中。 标准值通常都大于1,因此格式中无需包含1。 下文为将一个十进制数字转换成短浮点数值的实例。 例22.625转成二进制22= (10110)20.625=(.101)2(22.625)h=(10110.101)b=(1.0110101)b*2短浮点数和有符号整型一样,符号位是1,表示负数;符号位是0,表示正数。 指数位部分既可表示正指数又可表示负指数。 因此,指数位部分通过实际指数值加上偏差值127的方法计算。 例如实际指数值为-15,该浮点数的指数位值是112。 由于偏差值的作用,实际指数值的有效范围为-127到128。 有效位表示标准二进制数值的分数部分。 标准二进制数值大于1小于10并包含小数部分。 小数部分很重要,因此被包含在浮点数格式中。 标准值通常都大于1,因此格式中无需包含1。 下文为将一个十进制数字转换成短浮点数值的实例。 例22.625转成二进制22= (10110)20.625=(.101)2(22.625)h=(10110.101)b=(1.0110101)b*244522.625为正整数符号位为为0指数位4+127=131=10000011尾数位01101010000000000000000则整个522.625用二进制表示为01000001101101010000000000000000例例2xx00001101101010000000000000000转成十进制符号位01000001101101010000000000000000转成十进制符号位0表明该数为正整数指数位10000011=131减去偏移量127=4.尾数位0110101000000000000000=0*0.5+1*0.25+1*0.125+1*0.03125+1*0.0078125=0+0.25+0.125+0.03125+0.015625=0.41406250110101000000000000000=0*0.5+1*0.25+1*0.125+1*0.03125+1*0.0078125=0+0.25+0.125+0.03125+0.015625=0.4140625值为2(1+0.4140625)*2的的44次方计算公式数值=(-1)符号位x1+(有效位/223)x2(指数位127)数值=(-1)符号位x1+尾数)x2(指数位127)浮点数的精度通过上面可以看到x1.xxx这个数的量级的最小数是22的3-23次方,对应的十进制数为1.000000119209289550781251.00000011920928955078125可以精确到小数点后323位,但C C语言中却说t float类型的有效位只有类型的有效位只有767位,为什么?这是因为二进制小数与十进制小数没有完全一一对应的关系。 由上表可以看出,不看符号位和指数位,只看尾数位,上表列出了X1.XX这个数量级的66个量最小幂的二进制小数,对应的十进制如右表所示。 个量最小幂的二进制小数,对应的十进制如右表所示。 1.000000119209289550781251.00000011920928955078125和和1.0000002384185791015625,这两个数之间是有间隔的,如果想用二进制小数来表示,这两个数之间是有间隔的,如果想用二进制小数来表示88位有效数为1. 00000002、1. 00000003、1.00000004.。 这些数是无法办到的,而。 这些数是无法办到的,而77位有效数11.0000001可以用22的3-23次方来表示,21.0000002可以用22的-22,次方来表示,1.0000003可以用22的-23次方和22的-22次方相加得到。 同理1.0000004可以用22的1-21次方来表示。 51.0000005可以用22的3-23次方和22的1-21次方来表示。 从这个角度来讲,t float所能表示的位数只有77位,77位以后的数虽然也是精确表示的,但却无法表示任意一个想表示的数值。 位以后的数虽然也是精确表示的,但却无法表示任意一个想表示的数值。 如但也有例外如61.0000006无法使用尾数位表示,二进制小数对于十进制小数来说相当于是离散的,刚好凑不出无法使用尾数位表示,二进制小数对于十进制小数来说相当于是离散的,刚好凑不出61.0000006这个数,从这点来看,t float型所能精确表示的位数只有66位。 至于55位有效数值的任何数都是可以使用尾数位相加组合出来。 尾数2=B*2的1-1次方2+B*2的2-2次方2+B*2的3-3次方2B*2的3-23次方。 对于一个很大的数,如1234567890它的尾数位乘上指数位的系数被放大的,但它的有效位仍是尾数位所能表示的它的尾数位乘上指数位的系数被放大的,但它的有效位仍是尾数位所能表示的66位有效数字,01234567890所对应的二进制数数0X4E932C06,尾数位的数值为,尾数位的数值为1.1497809886932373046875,指数位数值为22的的030次方为1073741824.1073741824*1.1497809886932373046875=12345679361073741824.1073741824*1.1497809886932373046875=1234567936比,对比1234567890高,也只有高77位是有效位,后三位是无效位。 t Int型可以精确的表示出1234567890,而t float则只能近似表示则只能近似表示1234567890,精度问题决定了t float型根本无法取代t int类型。 3232位浮点型偏移量为什么是7127而不是8128问题移码中移码转换成原码时需要减去修正量也称偏移量,88位移码的偏移量为128,而在浮点型中偏移量变成了,而在浮点型中偏移量变成了7127为什么?在网络上给的解释是浮点型数据在进行二进制编码时存在4IEEEEE754的标准化后首位的11会隐藏掉,故偏移量为7127而不是128.32位的浮点数中,浮点数的符号位,1位,0表示正数,1表示负数。 尾数,23位,用小数表示,小数点放在尾数域的最前面。 阶码,8位阶符采用隐含方式,即采用移码方式来表示正负指数。 移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。 采用这种方式时,将浮点数的指数真值e变成阶码时,应将指数e加上一个固定的偏移值127(01111111B),即e01111111B.因为M只是尾数,1个规格化的32位浮点数其有效位应该是24位,即绝对值表达式是(0.)2(01111111).其真实值的表达是(1.(1)2(10000000)。 比如8是2的3次,不算隐藏为位的话
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4.2 洋流 第三课时 教学设计 2024-2025学年高二上学期 湘教版(2019)地理选择性必修一
- 内蒙古开鲁县高中生物 第五章 基因突变及其他变异 5.1 基因突变和基因重组说课稿1 新人教版必修2
- 1.2 乘法公式说课稿-2025-2026学年初中数学湘教版2024七年级下册-湘教版2024
- 九年级化学下册 第6章 溶解现象 第2节 溶液组成的表示说课稿设计(pdf) 沪教版
- 2023八年级英语下册 Module 10 On the radio Unit 1 I hope that you can join us one day第二课时说课稿 (新版)外研版
- 2025年电子厂电烙铁焊接考试试题及答案
- 中国邮政2025蚌埠市秋招社区团购运营岗位高频笔试题库含答案
- 中国邮政集团2025忻州市秋招网申-申论题题库及答案
- 2025年自考专业(教育管理)模拟题库附参考答案详解【预热题】
- 中国邮政集团2025宁德市秋招笔试综合知识题专练含答案
- 2025年辅警招聘理论知识考试题库(100题)含答案
- 法人变更免责协议书
- 看美剧学口语知到智慧树期末考试答案题库2025年青岛职业技术学院
- 技能竞赛汇报课件
- 重庆市社区工作者招聘真题2024
- 《数字营销》课程标准(电子商务)
- 2025年 商品编码(HS CODE)电子档
- 房屋抵扣协议书
- JJF 2176-2024便携式湿度发生器校准规范
- 2025年上半年浙江省宁波慈溪观海卫镇人民政府招聘编外13人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年教资初中体育试题及答案
评论
0/150
提交评论