c语言如何将浮点数转换为字节,浅谈C语言整型与浮点型转换

本文探讨了C语言中整型(包括int和unsigned int)与浮点数的转换问题,包括溢出现象、转换方法以及浮点数的表示和计算。特别提到了浮点数转换为字节可能导致的问题,并分析了浮点数相加不满足结合律和分配律的情况。同时,文章还讨论了不同数据类型间转换可能遇到的精度和溢出问题。
摘要由CSDN通过智能技术生成

本篇博客将阐述、讨论的内容:

●int

int的范围根据计算机的不同存在16位或32位的差异,以16位举例,最大值为1111 1111 1111 1111,也就是65535,如果出现65536,就会溢出。

●unsigned int(无符号整型)

以16位系统为例,unsigned int能存储的数据范围是0~65535(需要注意整数是以补码形式存放)。其进行的是模数计算,也就是所谓的二进制相加减,计算方法和十进制加减并无区别,但是unsigned int有着正溢出和负溢出的问题。

对于正溢出与负溢出,诸多基础概念便不再赘述,不懂的朋友可以去回顾计算机组成原理的相关知识。

这里仅举出一个负溢出的例子:

进行自然丢弃后,可知结果为0。很明显,产生了负溢出。

●接下来,我们说说unsigned int和int的相互转化,代码如下:

float sum_elements(float a[],unsigend length){

float result = 0;

for(int i = 0; i <= length - 1; i++){

result += a[i];

return result;

}

}

很显然,计算一个数组所有元素之和。但当数组为空时,length输入0,会返回一个存储器错误。为什么呢?请看unsigned int的计算,length是unsigned int 类型,进行的是模数运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值