整数的表示方法
在计算机当中,整数有三种表示方法就是这次所说的,原码、反码、补码。
三种表示方法均都包括符号位和数值位两部分,符号位中用0表示“整数”,用1表示“负数”。
而且我们符号位为0也就是正数的原码、反码、补码都相同;
但负整数也就是符号位为1的整数,三种表示方法就各不相同了。

如上例,0->正数、1->负数。
原码:直接将数值按照正负数的形式翻译成二进制就得到原码。
反码:将原码的符号位不变,其他位按位取反就得到反码。
补码:给得到的反码+1就可以得到补码,一般我们在内存中储存的就是补码。
不过我们现在知道从原码到补码只有一种方式,就是把原码数值位按位取反然后在+1,但是从补码到原码有两种方式。
1、可以将补码反向操作,先-1再取反得到原码。
2、也可以将补码再次取反+1,也能得到相应原码。
知道了原码、反码、补码,那接下来还要知道大小端字节序
如果一个数值超过一个字节,那它要存储到内存中,就要有顺序的区分。
大端储存模式下,数据的低位保存在内存的高地址中,数据的高位保存在内存的低地址中;
小端储存模式下,数据低位保存在内存低位,数据高位保存在内存高位;

那如果想要判断,我们的储存模式是大端还是小端怎么办呢?
看下面这段代码↓↓↓↓
int main()
{
int a = 1;
char* p = (char*)&a;
if (*p == 1)
printf("小端");
else
printf("大端");
return 0;
}
将int类型的a强制转换成char类型
我们知道char类型只占1个字节
所以说只要判断出a首地址是不是1就能知道储存类型是大端还是小端。
理解C语言中整数的原码、反码和补码及字节序
本文介绍了计算机中整数的三种表示方法——原码、反码和补码,强调了正负数在这些表示中的差异,并详细解释了从原码到补码的转换过程。此外,还探讨了字节序的概念,特别是在大端和小端储存模式下的数据存储规则,并给出了判断系统字节序的代码示例。
1601

被折叠的 条评论
为什么被折叠?



