🌈 个人主页:白子寰
🔥 分类专栏:魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~
💡 坚持创作博文(平均质量分78.8+),分享更多关于深度学习、C/C++领域的优质内容!(希望得到您的关注~)
目录
导图
整数在内存中的存储
(正,反,补)码之间的转换
对于整型数据来说:数据存储方式存的是补码
为什么?
使⽤补码,可以将符号位和数值域统⼀处理;
同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
大小端字节序和字节序判断
在下列代码中 “ int a = 0x11223344 ; ”,这个数字是以字节为单位倒着存储的。
为什么呢?
一图KO大小端概念
以上面代码a为栗子
判断大小端的两种方式
①指针
int main()
{
int a = 1;
//方式一
if(*(char*)&a == 1)
//方式二
/*char* p = (char*)&a;
if (*p == 1)*/
printf("小端\n");
else
printf("大端\n");
return 0;
}
②指针+函数
int check_clc()
{
int a = 1;
return *(char*)&a;
//1.取出a的地址
//强制类型转换为char*的指针,再解引用
}
int main()
{
int ret = check_clc();
if (ret == 1)
printf("小端\n");
else
printf("大端\n");
return 0;
}
控制台输出:小端
为什么会有大小端之分?
因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8 bit 位,
但是在C语⾔中除了8bit的 char 之外,还有16bit的 short 型,32bit的 long 型(要看具体的编译器),
另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。
因此就导致了大端存储模式和小端存储模式。
***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。
等等等等一下,分享最近喜欢的一句话:“你都不知道山有多高,你怎么能知道终点在哪呢 -- 樊振东”。
我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!!
好了划走吧。