当前位置:首页 > 芯闻号 > 充电吧
[导读]#includeint main(){float a = 1.0f;cout << sizeof(int)<<endl;//4cout << sizeof(floa

#include

int main()
{
float a = 1.0f;

cout << sizeof(int)<<endl;//4
cout << sizeof(float)<<endl;//4

cout << (int)a<< endl;//1
cout << &a<< endl;
cout << (int)&a<< endl;
cout << (int&)a<< endl;
    

cout << boolalpha<< ((int)a == (int&)a) <<endl;//  输出false.因为1!=1065353216.

float b = 0.0f;
cout << (int)b<< endl;//0
cout << &b<< endl;
cout << (int&)b<< endl;//0
cout << boolalpha<< ((int)b == (int&)b) <<endl;//   输出true,因为0==0;

return 0;
}

========================c语言中FLOAT是如何表示的===========================

c语言中FLOAT 是如何表示的?尾数,阶码是如何在32位上安排的,即哪几位是尾数,哪几位是阶码,那一位是符号位。听说与CPU有关,是真的吗?


   在C++里,实数(float)是用四个字节即三十二位二进制位来存储的。其中有1位符号位,8位指数位和23位有效数字位。实际上有效数字位是24位,因为第一位有效数字总是“1”,不必存储。
   有效数字位是一个二进制纯小数。8位指数位中第一位是符号位,这符号位和一般的符号位不同,它用“1”代表正,用”0“代表负。整个实数的符号位用“1”代表负,“0”代表正。
   在这存储实数的四个字节中,将最高地址字节的最高位编号为31,最低地址字节的最低位编号为0,则实数各个部分在这32个二进制位中的分布是这样的:31位是实数符号位,30位是指数符号位,29---23是指数位,22---0位是有效数字位。注意第一位有效数字是不出现在内存中的,它总是“1”。
    
   将一个实数转化为C++实数存储格式的步骤为:
   (1)先将这个实数的绝对值化为二进制格式,注意实数的整数部分和小数部分化为二进制的方法是不同的。
   (2)将这个二进制格式实数的小数点左移或右移n位,直到小数点移动到第一个有效数字的右边。
   (3)从小数点右边第一位开始数出二十三位数字放入第22到第0位。
   (4)如果实数是正的,则在第31位放入“0”,否则放入“1”。
   (5)如果n是左移得到的,说明指数是正的,第30位放入“1”。如果n是右移得到的或n=0,则第30位放入“0”。
   (6)如果n是左移得到的,则将n减去一然后化为二进制,并在左边加“0”补足七位,放入第29到第23位。如果n是右移得到的或n=0,则将n化为二进制后在左边加“0”补足七位,再各位求反,再放入第29到第23位。
    
   将一个计算机里存储的实数格式转化为通常的十进制的格式的方法如下:
   (1)将第22位到第0位的二进制数写出来,在最左边补一位“1”,得到二十四位有效数字。将小数点点在最左边那个“1”的右边。
   (2)取出第29到第23位所表示的值n。当30位是“0”时将n各位求反。当30位是“1”时将n增1。
   (3)将小数点左移n位(当30位是“0”时)或右移n位(当30位是“1”时),得到一个二进制表示的实数。
   (4)将这个二进制实数化为十进制,并根据第31位是“0”还是“1”加上正号或负号即可。

   特别地,实数0用C++的float格式表示是00000000000000000000000000000000。


如果还不太明白,这里举几个例子。
   一。将23.56化为C++的float格式。
   (1)将23.56化为二进制后大约是“10111.1000111101011100001”。
   (2)将小数点左移四位,得到“1.01111000111101011100001”。
   (3)这已经有了二十四位有效数字,将最左边一位“1”去掉,得到“01111000111101011100001”。将它放入第22到第0位。
   (4)因为23.56是正数,因此在第31位放入“0”。
   (5)由于我们把小数点左移,因此在第30位放入“1”。
   (6)因为我们是把小数点左移4位,因此将4减去1得3,化为二进制,并补足七位得到0000011,放入第29到第23位。
    完毕。
   如果把最左边定为第31位,最右边定为第0位,那么在C++里,float格式的23.56是这样表示的:01000001101111000111101011100001。相应地-23.56就是这样表示的:11000001101111000111101011100001。

   二。将实数0.2356化为C++的float格式。
   (1)将0.2356化为二进制后大约是0.00111100010100000100100000。
   (2)将小数点右移三位得到1.11100010100000100100000。
   (3)从小数点右边数出二十三位有效数字,即11100010100000100100000放入第22到第0位。
   (4)由于0.2356是正的,所以在第31位放入“0”。
   (5)由于我们把小数点右移了,所以在第30位放入“0”。
   (6)因为小数点被右移了3位,所以将3化为二进制,在左边补“0”补足七位,得到0000011,各位取反,得到1111100,放入第29到第23位。
     完毕。因此0.2356用C++的float格式表示是:00111110011100010100000100100000。其中最左边一位是第31位,最右边一位是第0位。

   三。将实数1.0化为C++的float格式。
   (1)将1.0化为二进制后是1.00000000000000000000000。
   (2)这时不用移动小数点了,这就是我们在转化方法里说的n=0的情况。
   (3)将小数点右边的二十三位有效数字00000000000000000000000放入第22到第0位。
   (4)因为1.0是正的,所以在第31位里放入“0”。
   (5)因为n=0,所以在第30位里放入“0”。
   (6)因为n=0,所以将0补足七位得到0000000,各位求反得到1111111,放入第29到第23位。
     完毕。所以实数1.0用C++的float格式表示是:00111111100000000000000000000000。其中最左边一位是第31位,最右边一位是第0位。


   这是IEEE短实数格式,适合X86cpu。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭