时间:25-04-27
1.整数在内存中的存储
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
整数的二进制表示方法有三种,即原码、反码、补码。
三种表示方法均有符号位和数值位两部分,数值位的最高位被当作符号位,其中0表示“正”,1表示“负”,剩余的位则为数值位。
对于正整数,它的原码、反码、补码都相同。
对与负整数,则三种表示方法各不相同:
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码
补码:反码+1就得到补码

计算机再存储整数时,存放的都是补码。
原因是:
1.在计算机系统中,数值⼀律⽤补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;
2.同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
2.大小端字节序和字节序判断下面我们以一段代码来观察数据的存储

通过调试,我们可以发现0x11223344这个数字是以字节为单位,倒着存储的。
究其原因,我们了解到数据在内存中存储的顺序与大小端有关。
2.1什么是大小端?大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存 在内存的低地址处。
小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
上面展示的就是按照小端模式存储字节顺序的。
我们也可以通过一端代码来判断我们的硬件是通过哪种模式来存储字节顺序的。
方法一:
代码语言:javascript代码运行次数:0运行复制#include<stdio.h>int check(){int i = 1;return (*(char*)&i);}int main(){int b = check();if (b == 1)printf("小端");elseprintf("大端");return 0;}</stdio.h>登录后复制