整型数据:
在内存中是以补码的形式存在。对于一个正整数来说,它的补码就是它的原码本身。对于一个负整数来说,它的补码为原码取反再加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(省略了后面的计算)
例、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是个非法数据。
参考资料:
来源:牛客网
问题:既然char类型的数据在计算机中是以整数形式存储,那么计算机怎么识别int和char呢,有标记吗?(CPU层次不必说,CPU只能执行机器语言,无法识别各种数据类型,但是编译器怎么识别char和int呢)