整型在内存中是怎么存储的呢?让我们看一下下面的图
内存中显示的是十六进制;每4个bit位换一个十六进制位,图中的0a就对应一个字节;整数分为有符号数和无符号数。
有符号数包括:正数和负数。有符号数最高位是符号位,0表示正,1表示负。
无符号数没有正负之分,只有正数。无符号数最高位是有效位。
整数有三种表示形式,原码,反码和补码。正数的原-反-补相同。负数的原码-反码-补码的关系是:原码符号位不变,其它位按位取反的反码;反码加1得补码的关系;
那么整数在内存中是以哪种形式存的呢?
通过分析得到的答案是补码。
我们先直接写出整型a的原码是:
现在我们给一个整型变量b
由于CPU中只有加法运算器 a-b应转换为a+(-b)求解
如果简单粗暴用原码直接相加,并用原码存在内存中,所得的结果是不符合的。
而用补码来运算和存储则能巧妙的解决掉这个问题
所以整型再内存中是以补码的形式存储的。
那么转换为十六进制的整数10应为0x0000000a,而内存中的倒序存的,这是怎么回事呢?
这就牵扯到大小端(字节序)存储模式了
地址有分高地址和低地址,字节有分高字节和低字节。内存单元编号高的就是高地址,字节位高的就是高字节。比如0x0053FA90相对于0x0053FA89就是高地址,0x11223344中33字节就是44的高字节。
大端字节序存储模式:高字节放在低地址处,低字节放在高地址处。
小端字节序存储模式:高字节放在高地址处,低字节放在低地址处。
看到这里,你应该知道整型在内存中的存储是什么样的了吧!
求点赞!\<&_&>/