1 整数在内存中的存储整数的二进制表示方法有三种,即原码、反码、补码。三种表示方法均有符号位
1.整数在内存中的存储
整数的二进制表示方法有三种,即原码、反码、补码。
三种表示方法均有符号位和数值位两部分,数值位的最高位被当作符号位,其中0表示“正”,1表示“负”,剩余的位则为数值位。
对于正整数,它的原码、反码、补码都相同。
对与负整数,则三种表示方法各不相同:
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码
补码:反码+1就得到补码
计算机再存储整数时,存放的都是补码。
原因是:
1.在计算机系统中,数值⼀律⽤补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;
2.同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
2.大小端字节序和字节序判断下面我们以一段代码来观察数据的存储
通过调试,我们可以发现0x11223344这个数字是以字节为单位,倒着存储的。
究其原因,我们了解到数据在内存中存储的顺序与大小端有关。
2.1什么是大小端?大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存 在内存的低地址处。
小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
上面展示的就是按照小端模式存储字节顺序的。
我们也可以通过一端代码来判断我们的硬件是通过哪种模式来存储字节顺序的。
方法一:
代码语言:javascript代码运行次数:0运行复制#include登录后复制int check(){int i = 1;return (*(char*)&i);}int main(){int b = check();if (b == 1)printf("小端");elseprintf("大端");return 0;}
菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。
版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理
Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1
本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源