数据的存储【整形提升】

正数的原、反、补码都相同
对于整形来说:数据存放内存中其实存放的是补码。
为什么呢 ?
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

一、大端存储和小端存储

1.大端存储和小端存储的区别:

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

小端字节序:把数据的低位字节序放在低地址处,高位字节序的内容放在高地址处。

2.如何查看自己的电脑是采用的哪种方式的存储

二、代码在内存中的存储方式练习

练习1

#include<stdio.h>
int main()
{
   int i = 0 ;
   unsigned int j = 10 ;
   printf("%d\n",i+j) ;
   return 0; 
}

解答: 

 

%d: 认为内存中有符号位    %u:认为内存中没有符号位

%u用来打印无符号整形

练习2

#include<stdio.h>
int main()
{
  char a = -1 ;
  signed char b=-1 ;
  unsigned char c = -1 ; 
  return 0 ;
}

解答: 

补充说明:1.char到底是signed char 还是unsigned char,C语言标准并没有规定,取决于自己的                         编译器

                   2.int是signed int   ;   short 是 signed short

练习3

#include<stdio.h>
int main()
{
	char a = -128;
	printf("%u\n", a);
	return 0;
}

解答: 

 

练习4 

int main()
{
	unsigned char i = 0;
	for (i = 0; i <= 255; i++)
	{
		printf("hello world\n");
	}
	return 0;
}

此处的循环条件是i<=255,而i的类型是unsigned char ,其取值范围是0~255,因此循环永远不会终止,代码陷入死循环。 

三、char类型数据的存储范围

 我们发现不论是有符号char还是无符号char,它们的区间长度相同,都是256个数字

int类型和char类型被我们归类于整形大家族,其实float家族的的存储和使用与整形大家族有很大的区别,后续的内容我还会再做补充,欢迎持续关注~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值