整型数据在内存中的存储

1.数据的类型介绍

char        //字符数据类型
short       //整短型
int			//整形
long		//长整形
long long	//更长整形
float		//单精度浮点型
double		//双精度浮点型

1.1类型的基本归类

整形家族:

char
	unsigned char		//无符号字符型
	signed char			//有符号字符型
short
	unsigned short	//无符号短整型型
	signed short		//有符号短整型型
int 
	unsigned int		//无符号整型
	signed int			//有符号整型
long
	unsigned long		//无符号长整形
	signed long			//无符号长整形 

char c1;		//char 到底是有符号的,还是无符号的,是不确定的,是取决于编译器的实现结果;同时char虽然是字符类型,但是字符类型存储的时候,存储的字符的ASCII值,ASCII的值是整数。
short s1;		//指的是有符号的s1;
signed s2;		//指的是有符号的s2;
unsigned s3;	//指的是无符号的的s3;
int n1;			//指的是有符号的n1;

short等价于signed short;
int等价于signed int;
long等价于signed long

浮点数家族:

float	//单精度浮点型
double	//双精度浮点型

构造类型:


>数组类型
>结构体类型 	struct
>枚举类型	enum
>联合类型	union

指针类型:

int *pi;		//整形类型指针
char*pc;		//字符类型指针
float*pf;		//单精度类型指针
void*pv;		//双精度类型指针

空类型:

void表示空类型(无类型)
通常应用于函数的返回类型,函数的参数,指针类型。

2.整形在内存中的存储

一个变量的创建时要在内存中开辟空间的,空间的大小是根据不同的类型决定的。

2.1原码,反码,补码

计算机的整数有三种表达方式,即原码,反码,补码。
三种的表达方式均有符号位数值位,符号位都是用0表示“正”,“1”表示负,但是正整数和负整数的表达方式是不同的。

正整数:

原码,反码,补码都是相同的。

负整数:

原码:直接将按照正负数的形式翻译成二进制即可。
反码:将原码的符号位不变,其他位依次按位取反即可
补码:在反码的基础上+1即可。

实例:

#include<stdio.h>
int main()
{

	int a = -3;    //负数的正,反,补码皆不同

//原码:10000000000000000000000000000011
//反码:11111111111111111111111111111100
//补码:11111111111111111111111111111101

	int b = 5;
//原码:00000000000000000000000000000101
//反码:00000000000000000000000000000101
//补码:00000000000000000000000000000101

	int c = a + b;								//使用补码的二进制进行计算

//a的补码:	11111111111111111111111111111101
//b的补码:	00000000000000000000000000000101
//c的补码:	00000000000000000000000000000010   //c=2

	printf("%d\n", c);//数据的打印是补码计算结果   

	return 0;
}

运行结果
在这里插入图片描述

总结:

1.在计算机的系统中,数值一律用补码来储存和表示,原因在于,使用补码,可以将符号位和数值统一处理。
2.对于整数来说:数据存放在内存中的其实放的是补码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值