C语言之数据存储汇总

一:隐形类型转换;

当我们在进行表达式计算中,务必要留意小于int类型的整数,像short,char等类型得数,而此时务必要先进行整型提升;

1: 已知c1,c2是char类型的,所以要先整形截断;

2:在c3表达式中,char类型在进行计算时,要发生隐形类型转换,即整型提升;

3:整型提升时看它是否有符号位,有符号位的就拿它最高位补符号位,无符号位的直接补零;

4:计算中存储在c3中的是补码;

5:打印过程中 % d 或者是%u ,打印他们时打印的是原码;所以要先对c3进行整型提升,然后减一的反码,最后符号位不变其他位按位取反得原码,打印的值即为二进制所表达得值‘

二:算术转换:

1:1:当表达式中 int 与 float相加减,会把int类型的转变位float类型的,算术转换中类型时向上转换的。

2:假如表达式中有小于int类型的数和有大于int类型的数,那么小于int类型的数会先进行整数提升,在于比他们类型较大的数中发生算术转换;

3:补码得原码,先进行减一,再取反。

 1:有符号类型得char存储范围位 -128-127,无符号类型的char范围为 0~255;

 

 由于i的类型为无符号整型,所以当i减少到负数,假设为-1时,它的符号位当作有效位,

所以它就被计算机认为及其大的数,他会不断循环输出下去;

 这道题主要考了有符号char的存储范围,因为char类型的范围为-127到128,所以char类型的数组最多只能存储255个数;当char类型从-1到-128,再从-128到127,127在到0时,又因为'\0'的assica值为0,所以当strlen函数指针读到'\0'时,退出,故只能读取255个数字;

 三:一:浮点数在内存中的存储;

 1:存储时,在计算机内部保存中,默认M的取值范围为  1 <= M < 2,存储时可只存储M的小数部分,等到读取时再把这个数读取过去;

2:对于E来说,E是一个无符号类型的数,但在科学计数法中,E的值可能为负数,所以我们再存储E时可以加上以一个中间值,对于8位的E,中间值位127,对于11位的E,中间值为1023.

二:浮点数在内存中的取出;

E从内存中取出:
1:当E不全为0或者不全为1

对于32位的浮点数来说,将存储在E中的二进制数转变为对应数字,然后再减去127.M再加上有效数字M前加上第一位的1;

2:当E全为0时

此时的浮点数的指数E就等于1-127;有效数字M也不再加上第一位的1,而是还原为0.xxxxxx的小数,这样表示接近于很小的数字;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暂停更新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值