C51中,16进制数的32进制表示方法法是(),0X12表示的十进制数是()

KEIL编译器_C51浮点数显示、浮点数表示方法 - float-c - ITkeyowrd
KEIL编译器_C51浮点数显示、浮点数表示方法
推荐:一、表示方法 在计算机中,浮点数一般由三部分组成:符号位+阶码+尾数。 这种浮点数是用科学记数法来表示的,即:浮点数=符号位.尾数×2^阶码。 根据IEEE 754国
领取地址:
C51里用4字节存储一个浮点数,格式遵循IEEE-754标准(详见c51.pdf第179页说明)。一&个浮点数用两个部分表示,尾数和2的幂,尾数代表浮点上的实际二进制数,2的幂代表指&数,指数的保存形式是一个0到255的8位值,指数的实际值是保存值(0到255)减去127,一个&范围在-127到+128之间的值,尾数是一个24位值(代表大约7个十进制数),最高位MSB通常是&1,因此不保存。一个符号位表示浮点数是正或负。&浮点数保存的字节格式如下:&地址& && &&&+0& && && & +1& && && &&&+2& && && &&&+3&内容& & SEEE EEEE& &EMMM MMMM& & MMMM MMMM& & MMMM MMMM&这里&S 代表符号位,1是负,0是正&E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。&M 24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了&较高的有效位数,提高了精度。&零是一个特定值,幂是0 尾数也是0。&浮点数-12.5作为一个十六进制数0xC1480000保存在存储区中,这个值如下:&地址 +0& &&&+1& &&&+2& &&&+3&内容0xC1& &0x48& &0x00& &0x00&浮点数和十六进制等效保存值之间的转换相当简单。下面的例子说明上面的值-12.5如何转&换。&浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表&所列的那样分开,例如:&地址& && & +0& && && &&&+1& && && && &+2& && && && &+3&格式& &SEEE EEEE& & EMMM MMMM& &&&MMMM MMMM& &&&MMMM MMMM&二进制&&& &&&& && && && &&十六进制& &C1& && && &&&48& && && && &00& && && && &00&从这个例子可以得到下面的信息:&&&符号位是1 表示一个负数&&&幂是二进制或十进制130,130减去127是3,就是实际的幂。&&&尾数是后面的二进制数&在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数&点到尾数的开头,得到尾数值如下:&1.&接着,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为&指数是3,尾数调整如下:&0&结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的2的幂,例如:1100表示&(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。&小数点的右边也代表所处位置的2的幂,只是幂是负的。例如:.100...表示(1*2^(-1))+&(0*2^(-2))+(0*2^(-2))...=0.5。&这些值的和是12.5。因为设置的符号位表示这数是负的,因此十六进制值0xC1480000表示-&12.5。&浮点数错误信息&& &&8051没有包含捕获浮点数错误的中断向量,因此,你的软件必须正确响应这些错误情&况。&& & 除了正常的浮点数值,还包含二进制错误值。这些值被定义为IEEE标准的一部分并用在&正常浮点数操作过程中发生错误的时候。你的代码应该在每一次浮点操作完成后检查可能出&现的错误。&& && &&&名称& && &&&值& && & 含义&& && &&&NaN& &&&0xFFFFFFF& &不是一个数&& && &&&+INF& & 0x7F80000& &正无穷(正溢出)&& && &&&-INF& & 0xFF80000& &负无穷(负溢出)&& & 你可以使用如下的联合体(union)存储浮点数。&& & union f {&& && &float& && && &&&//浮点值&& && &&&//无符号长整数&& & };&& & 这个union包含一个float和一个unsigned long以便执行浮点数学运算并响应IEEE错误&状态。&& &&&& & 以上是KEIL在线帮助的中译文,下面我们讨论如何显示浮点数。&& &&&& & 尾数为24bit,最高可表达的整数值为2^24-1=,也就是说,小于等于&的整数可以被精确显示。这决定了十进制浮点数的有效位数为7位,10^7&^8,&10的7次方以内的数小于,可以精确表示。使用科学记数法时,整数部分占1位,所&以小数部分最大占7-1=6位,即最大有6位十进制精度。&& & 长整形数和浮点数都占4字节,但表示范围差别很大。浮点数的范围为+-1.&到+-3.,无符号长整形数范围为0到。显示浮点数要用到长整形数保&存数据,可他们范围差这么多,怎么办呢?&& & 仔细观察十进制浮点数的显示,有一个尾数和一个阶码,由上面论证可知32位IEEE-754&浮点数最大有效数字为7位十进制数,超出此范围的数字有截断误差,不必理会,因此,浮&点数尾数能够放在长整形数里保存。阶码为-38到38,一个char型变量就可以保存。&& & 综上所述,以10^7的最大跨度为窗口(小于10^7也可以,如:10,100...10000等,但决&不能大于它,那样会超出精度范围),定位浮点数的量级,然后取出7位尾数的整数值存于长&整形数里,再调整阶码,就可以精确显示此浮点数。&& & 量级尺度如下:&& && &(-38)-(-35)-(-28)-(-21)-(-14)-(-7)-(0)-(7)-(14)-(21)-(28)-(35)-(38)&& & 请严格按照KEIL手册给出的浮点数范围显示,因为数值空间没有完全使用,有些值用于&错误指示和表示正负无穷。小于1.的数仍可以显示一些,但最好不用,以免出&错。我采用直接判断的方法,剔除此种情况。&& & 在计算机里结合律不成立,(a*b)*c!=a*(b*c),原则是先让计算结果值动态范围小的两&个数运算,请注意程序里的写法。&& & 注:(1E38/b)*1E6不要写成1E44/b,因为无法在32位浮点数里保存1E44,切记!&& & 计算机使用二进制数计算,能有效利用电子器件高速开关的特性,而人习惯于十进制数&表示,二进制和十进制没有方便的转换方法,只能通过大量计算实现,浮点数的十进制科学&记数法显示尤其需要大量的运算,可见,显示一个浮点数要经过若干次浮点运算,没有必要&就不要显示,否则,花在显示上的时间比计算的耗时都要多得多。
C51里用4字节存储一个浮点数,格式遵循IEEE-754标准(详见c51.pdf第179页说明)。一
个浮点数用两个部分表示,尾数和2的幂,尾数代表浮点上的实际二进制数,2的幂代表指
数,指数的保存形式是一
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。16进制的表示方法是不是有 0x... 或 (...)16 这两种_百度知道
该问题可能描述不清,建议你
16进制的表示方法是不是有 0x... 或 (...)16 这两种
我有更好的答案
16进制,顾名思义,就是逢16进位:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F----10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20 …… 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。假设有一个十六进数 2AF5直接计算就是:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
16进制的表示方法是不是有 0x... 或 (...)16 这两种
C,C++规定,16进制数必须以 0x开头。在数制使用时,常将各种数制用简码来表示:如十进制数用D表示或省略;二进制用B来表示;十六进制数用H来表示。如:十制数123表示为:123D或者123;二进制数1011表示为:1011B;十六进制数3A4表示为:3A4H。
noip考试时
抱歉,这个我不知道。
采纳率:71%
C语言中用0x96这种,汇编语言中用96H这种
为您推荐:
其他类似问题
16进制的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言中16进制的表示方法_百度知道
C语言中16进制的表示方法
什么也不带时 各怎么表示?
我有更好的答案
1、C/C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等.其中的x不用区分大小写(注意:0x中的0是数字0,而不是字母O)。此外,C/C++中,10进制数有正负之分。比如12表示正12,而-12表示负12。但8进制和16进制只能表达无符号的正整数,如果在代码中写-0xF2,C/C++并不把它当成一个负数。2、以下是一些用法示例:int a = 0x100F;
//用一个十六进制数给变量a赋值int b = 0x70 +
//用一个十六进制数+变量a的值给变量b赋值
采纳率:74%
来自团队:
代表十进制%o
代表八进制%x
代表十六进制%u
无符号十进制数 %e
以科学记数法表示%#o
代表带前缀o的八进制%#x
代表待前缀ox的十六进制\0oo
八进制值(o表示一个八进制数字)\xhh
十六进制值(h表示一个十六进制数字)
本回答被网友采纳
%d 十进制%o 八进制%x 十六进制 /uxxxx 后面的xxxx四位数是十六进制 0x开头的数是十六进制
(是0和x) 别写错了啊 呵呵
16进制以0x开头,后面跟数字0~9或字母A~F(小写也可以),如:0x2D(16进制数2D)1、十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。2、十六进制与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。举例如下:int x=23;printf(&%x&, x); &// 以16进制格式输出,输出17printf(&%o&, x); &// 以8进制格式输出,输出27
其他2条回答
为您推荐:
您可能关注的内容
16进制的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C51进制转换 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
C51进制转换
21:40:20  
请问在C51中如何将十进制数转化为十六进制数???
22:02:21  
附件是一个进制转换的工具。。。
22:01 上传
点击文件名下载附件
下载积分: 积分 -1 分
6.74 KB, 下载次数: 40, 下载积分: 积分 -1 分
22:11:06  
附件是一个进制转换的工具。。。
额,不好意思,我是想问的函数怎么写...
23:35:01  
dec-hex为什么要转换?一般是BCD数才要转换。
内存中数值表示都是用二进制的。比如你:十进制数12.和十六进制0x0c。在内存中都是B
23:47:43  
要让数值输出为16进制格式时,将数值按16取模和取余就可以了
23:59:30  
需要知道你的具体要求。1.如果是给机器赋值或者是数学运算则不需要转换,计算机都是以二进制存储数的,任何数值的数最终都会转换为二进制。比如你写P0=100,和P0=0X64效果是一样的。
2.如果是将十进制数以十六进制形式显示出来,则需要相应转换。可以自己写转换函数,也可以调用现成的函数,比如sprintf函数(需包含stdio.h文件)。
具体用法:
char str[4];
int num=100;
sprintf(str,&0x%0x&,num);
最终str得到字符串&0x64&;
10:25:29  
要让数值输出为16进制格式时,将数值按16取模和取余就可以了
蒽蒽~可以了~谢谢
17:20:53  
谢谢,正需要。。。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司 上传我的文档
 下载
 收藏
粉丝量:391
免责声明:1,本账号发布文档来源于互联网和个人收集,仅用于技术分享交流用,版权为原作者所有。 2,文档内容纯属来自网络意见,与本账号立场无关。涉及政治言论一律相应删除,请大家监督。 3. 本账号发布文档均来源于个人收集和互联网,仅用于分享、学习、交流等使用.如在使用下载、浏览过程中出现问题,请及时站内留言或留下信箱等联系方式. 4. 本人不对文档合法性承担任何法律责任。 5. 如有文档存在侵权行为请告知,经核实将予以删除. 6,如有侵犯原您的版权,请提出指正,我们将立即删除相关资料有其它问题也欢迎与本人联系
 下载此文档
二进制、十进制、十六进制之间的转换, 与、或、非逻辑关系等;
下载积分:3000
内容提示:二进制、十进制、十六进制之间的转换, 与、或、非逻辑关系等;
文档格式:PDF|
浏览次数:366|
上传日期: 00:27:29|
文档星级:
全文阅读已结束,如果下载本文需要使用
 3000 积分
下载此文档
该用户还上传了这些文档
二进制、十进制、十六进制之间的转换, 与、或、非逻
关注微信公众号

我要回帖

更多关于 16进制表示方法 的文章

 

随机推荐