C语言——整型数据的存储

前言

整型数据在内存中都是以补码的二进制形式存放的

一、原码、反码、补码

整数有三种表示方法:原码、反码、补码

正数和负数在内存中用符号位(首位)来区分,正数是0,负数是1,符号位以外都是数值位

1.正整数的原码、反码、补码相同

int a=10;
//00000000 00000000 00000000 00001010    原码
//00000000 00000000 00000000 00001010    反码
//00000000 00000000 00000000 00001010    补码

2.负整数

  • 原码 的符号位为1
  • 反码 是符号位不变,数值位全部按位取反
  • 补码 是反码 +1
int a=-10;
//10000000 00000000 00000000 00001010    原码
//11111111 11111111 11111111 11110101    反码
//11111111 11111111 11111111 11110110    补码

二、整型在内存中都是以补码的形式存放的

注意:原码取反+1得到补码,补码取反+1得到原码

整型数据的存储

三、大端字节序和小端字节序

  • 大端字节序:把数据的低位字节序的内容存放在高地址,高位字节序的内容存放在低地址
  • 小端字节序:把数据的低位字节序的内容存放在低地址,高位字节序的内容存放在高地址
    大小端存储

计算机默认是小端存储,小端存储可以理解成是倒着存储的

例如:

小端

判断当前机器的字节序

int main()
{
	int a = 1;
	char* p = (char*)&a;  //强制类型转换成 char*
	if (*p == 1)
	{
		printf("小端\n");
	}
	else
		printf("大端\n");
	return 0;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青春无限坑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值