大家好,我是大家许久未见得猪猪,今天我们来聊聊c语言内存中数据得结构和存储,老规矩如果觉得猪猪讲的还不错的话,不妨给个一键三连,如果觉得猪猪讲的有问题的话还请移步与评论区斧正。
【一】整型提升和截断
前面我们提到过整形提升这个概念,今天我们继续回顾一下:
因为计算机只能执行整数的运算,所以我们内存中所有的大小低于整形的数据在使用的时候都要将其提升为整形进行计算,在二进制原码的表现就是若是符号位为0则前面缺少的位全部补上0,若是符号位为1,则前面缺少的位全部补1。那么截断又是啥呢?顾名思义,截断就是一刀两断,其实就是和整形提升相反的概念,运算的时候是需要这个数据的内型提升为整形,但是储存的时候,内存空间是存不下存储一个整形的,这个时候就会发生一个截断,也就是将这个二进制码保留原本的位数,其余的直接舍去。
【二】整形类型的基本归类
所有的整形类型都可以分为三类:分别是 整形,unsigned 整型,signed 整型。
但是从内存空间的视角来看signed 整型的效果和整型的效果是相同的,所以二者是等价的。
整型的意义:
1.使用这个类型开辟内存的空间的大小(大小决定了使用的范围)
2.如何看待内存空间的视角。
【三】整型在内存中的存储
我们了解计算机的存储的概念之前我们需要了解计算机的整数的三种表示方法:原码,反码,补码。
三种表示方法均有符号位和数值位两部分组成,符号位都是用0表示正,1表示负,而数值位的表示确实不相同的。
正数:正数的三码合一,也就是原反补相同
负数:原码就是直接是直接将数字转化为二进制,反码就是原码的符号位不变,其他位按位取反,补码就是反码加一。
计算机在空间中存储的都是补码,计算时使用的也是补码。
【四】为啥要区分正负数的补码?
在计算机系统中,数值一律用补码表示和存储,原因在于,使用补码,可以将符号位和数值域同意处理,同时加法和减法也可以同意处理(cpu只有加法器),此外,原码和补码相互转化,其运算过程是相同的,不需要额外的硬件电路。如图所示:
这样就可以按照一个规则取计算加减法。
以上就是本期的全部内容了,感谢大家的阅读,猪猪码字不易,还请一键三连~