前言:
期末临近,继续复习!
今天要复习的内容是数据在内存中的存储,主要是整型与浮点两种,还有大小端的介绍。
提出问题
打印结果是255 -1
为什么?
首先我们要知道数据都是以二进制的形式存储于计算机中的,而不同的类型在不同平台下占用的空间大小也不一样,具体可看下图
数据来源http://t.csdnimg.cn/2gnJv
在此基础上我们还要知道整数默认是4个字节,小数是8个字节
整数在内存中以补码形式存在
-1:11111111 11111111 11111111 11111111
把-1赋值给char类型的a,会发生截断,之后后八位被存进去了
a:11111111
同理,b:11111111
在打印的时候是以%d打印的,因此a,b要发生整形提升,a作为无符号数提升后为00000000 00000000 00000000 11111111
b作为有符号数变为11111111 11111111 11111111 11111111
这些都是补码,被读取后一个数255,一个是-1
在此基础上我们对char进一步分析,他可以存的数有以下这些
对于有符号char来说他的范围是-128到127
对于无符号char来说它的范围是0到255,都是存了256个不同的数,而且当你存的数字超过他的范围时,就会开始循环了如下图所示
举个例子,对于无符号数255,他的补码是11111111
那么你存一个无符号256此时存进去的就是00000000,每次循环就是256个数,具体顺序就是上图。