在C语言中,基本类型数据在内存中的存储形式

整型数据:
         在内存中是以补码的形式存在。对于一个正整数来说,它的补码就是它的原码本身。对于一个负整数来说,它的补码为原码取反再加1。
实型数据:
        在计算机中也是以二进制的方式存储,关键在于如何将十进制的小数转化为二进制来表示。 
例、12.63 
首先整数部分为:1100 
小数部分:0.63*2=1.26,得小数后第一位为1,0.26*2=0.52得小数的第二位为0,0.52*2=1.04得第三位为1,0.04*2=0.08得第四位为0,0.08*2得第五位,以此类推。于是得到最后的结果为1100.10100001b(省略了后面的计算)
字符型数据:
         把字符的相对应的ASCII码放到存储码单元中,而这些ASCII代码值在计算机中同样以二进制补码的形式存放的。[1]

    故,尽量避免大的浮点数和小浮点数运算,由于浮点数存储的特点,常常会使小的浮点数丢失且判断两个浮点数或一个浮点数和整数,常量是否相等,使用abs(x-y)<0.000001这种形式。

    在只支持十进制,八进制,十六进制,科学计数法的语法下,029是个非法数据。



参考资料:

[1]:https://www.nowcoder.com/questionTerminal/b8d34c56da1245399200555f88c5877e?orderByHotValue=1&page=1&onlyReference=false

来源:牛客网


问题:既然char类型的数据在计算机中是以整数形式存储,那么计算机怎么识别int和char呢,有标记吗?(CPU层次不必说,CPU只能执行机器语言,无法识别各种数据类型,但是编译器怎么识别char和int呢)



猜你喜欢

转载自blog.csdn.net/prolayman/article/details/79767356