数据之基本数据类型——整型

在c语言中,仅有四种基本数据类型——整型、浮点型、指针和聚合类型(如数组和结构等)。 所有其他类型都是从这四种基本类型的某种组合派生而来的。 此篇博客仅涉及到整型

1. 整型家族
整型家族包括字符、短整型、整型和长整型,它们都分为**有符号(signed)无符号(unsigned)**两种版本。
听上去“长整型”所能表示值应该比“短整型”所能表示的值要大,但这个假设并不一定正确。规定整型值互相之间大小的规则很多简单:
长整型至少应该和整型一样长,而整形至少应该和短整型一样长。
:在c语言标准中并没有规定长整型必须比短整型长,只是规定并不能比短整型短。为了更好的说明各种整型值的最小允许范围。我们这里引入一个表格方便大家理解

类 型 最小范围
char 0到127
signed char -127到127
unsigned char 0到256
short int -32767到32767
unsigned short int 0到65535
int -32767到32767
unsigned int 0到65535
long int -2417483647到2147483647
unsigned long int 0到4294967295

1.1整型的存储
我们都知道数据的存储是要在内存上开辟空间的,但是开辟完空间是以何种方式将数据存入进去的呢?
举个栗子:
int a=10; int b=20;
我们都知道 a为整型,内存需要为a分配四个字节的空间,但是a该如何存储呢?
这里我们先来了解下面几个名词的概念:
原码、反码、补码
计算机中的有符号数有三种表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位
三种表示方法各不相同。
原码
直接将二进制按照正负数的形式翻译成二进制就可以
反码
将原码的符号位不变,其他位依次按位取反就可以得到了。
补码
给反码加1,得到补码。
正数的原、反、补码都相同。
对于整形来说:数据存放内存中其实存放的是补码。

看完数据在内存的存储方式我们再来看一道题:

#include<stdio.h>
int main()
{
    
    
	int a=-20;
	unsigned int b=10;
	
	printf("%d",a+b);
}

答案大家都能口算,但是过程是怎么样子的呢?我们来看下面的解析
在这里插入图片描述

我们将两个数的补码相加之后然后再按位取反再+1得到原码随后进行输出
最终得到的原码为:10000000 00000000 00000000 00001010
最后得到的结果为10!

猜你喜欢

转载自blog.csdn.net/ahuyccc/article/details/111464649