数据的存储(整形篇)

  • 数据的存储
  1. 库函数是不属于C语言的,它是由编译器的厂商提供的,C语言只规定库函数的标准:如函数名、参数类型、返回值类型,函数功能
  2. C语言本身自带的类型有:

Char/short/int/long/long long---->整形家族

Float/double---->浮点家族

类型的意义:1.使用这个类型开辟了多少的内存空间

  1. 看待内存的视角不同(若是int,看待的就是整形视角,float是浮点视角)
  2. 一般short/int/long直接写出来都是代表有符号数,而char是否有符号取决于编译器
  3. 如何理解signed和unsigned?

如char为1个字节,8个比特位,在内存中补码假设为11111111

如果为unsigned,则8个1都为有效位,即原码等于补码等于反码

如果为signed,则高位代表符号位

举例:Int main()

{

Unsigned char c1 = 255;

Printf(“%d\n”,c1);--->结果为255

Char c2 = 255

Printf(“%d\n”,c2);--->结果为-1

Return 0;

}

上面这个例子告诉我们高位的1是符号位和有效位的区别,当为有效位结果是255,符号位则为-1

  1. 对于有符号的char取值范围是-128~127,无符号char的范围是0~256
  2. 整形在内存中的存储:

对于整形来说数据中存放的是整形的补码,而数据的加减也是通过补码完成的,我们原反补码的计算规则是补码减1等于反码,反码符号位不变别的位按位取反得到原码--->这个计算方式是针对负数而言的,换言之就是补码最前面的符号位为1的时候。若现在符号位为0,直接就是原反补相等

  1. 小端字节序:把一个数据低位字节的内容存放在内存的低地址处,把高位字节的内容存放在内存的高地址处

如:int a = 0x11223344

其中11就是高字节,44就是我们的低字节

 大端字节序:把一个数据高位字节的内容存放在内存的低地址处,把低位字节的内容放在高地址处

  1. 为什么会有大小端字节序之分?

若我们的数据大于一个字节时,就存在数据存储的一个顺序问题,比如一个数据有2个字节,放在一个整形变量里,那么如何安排存储的顺序就要我们去解决,于是就有了我们大小端字节序之分

  1. 如何判断是大端字节序还是小端字节序

Int main()

{

Int a = 1;

Char * p = (char*) &a;

If(*p ==1)

{

Printf(“小端字节序\n”);

}

else

{

Printf(“大端字节序\n”);

}

Return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值