![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
我有一个手办
这个作者很懒,什么都没留下…
展开
-
转换不匹配
使用%c打印336时,他只会查看储存336的两字节的后1字节,这种截断相当于用一个整数除以256,只保留余数,在这种情况下,余数是80,80在ascll码表中对应p。最后我们打印比short类型最大整数(32767)更大的数(65618),这里也同样运用了求模运算,在本系统中,65618应被存为四个字节,用%d时,只使用了后两个字节,这相当于65618除以65536的余数,这里的余数是82,鉴于负数的储存方法,如果余数在32767~65535之间会被打印成负数。原创 2022-10-10 23:18:46 · 106 阅读 · 0 评论 -
浮点值的上溢和下溢
假设有这样一个数,它的指数部分是最小值,即全部可用位表示尾数最小值该数是float类型精度表示的最小数字,现在把它除2,通常是指数部分减少。但这个假设中指数已经最小了,所以只好把尾数部分的位往右移动空出一个二进制位,并丢弃最后一个二进制数。虽然得到了结果,但是计算过程中损失了原末尾的有效位上的数字,这叫。以前这种情况是未定义的,现在C语言规定,这种情况下会给b一个表示无穷大的特定值用pintf()显示为inf或infinity(或其它内容)。如果除以一个非常大的值,会导致所有的位都为零。原创 2022-09-30 00:13:56 · 2786 阅读 · 2 评论 -
【无标题】浮点型
double最小的取值范围和float一样,但它最少表示10位有效数字。一般情况下,double占用64位而不是32。一些系统,把多出来的32位全部表示非指数部分,这不仅增加了有效数字的位数(提高了精度),而且减少了舍入误差。另一些系统把一些位分配给了指数部分,以容纳更大的指数,增大表示数的取值范围。无论哪种,double最少表示13位有效数值,超出了标准的最低位数。通常系统存储一个浮点数需要32位,其中8位由于表示指数的值和符号,剩下的表示非指数部分(也叫尾数或有效数)和符号。原创 2022-09-29 16:40:55 · 191 阅读 · 0 评论