数据的存储

1.基本数据类型

常见的:

char  short  int  long  long long  float  double 

 意义:每个类型开辟的空间大小不同,决定了使用范围的不同

在这里我们重点了解一下 signed (有符号的) unsigned (无符号的)

 顾名思义,这两个是前缀给内置类型的;

举个栗子

signed char 表示:这个char就是有符号的字符

ugsigned char  表示: 这个char就是无符号的字符

(最后有惊喜!!!)

当然signed和unsigned不止能修饰char ,下面介绍整形家族

整形家族 :

char  short  int  long 

2. 整形在空间里的存储

整数在空间中的存储有三种,分别是 原码,反码,补码

 三种表示方法均有符号位数值位两部分,符号位都是用0表示,用1表示,而数值位

正数的原、反、补码都相同。
负整数的三种表示方法各不相同。
原码
直接将数值按照正负数的形式翻译成二进制就可以得到原码。
反码
将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码
反码 +1 就得到补码。

在计算机中整形一般都已补码的形式存储   

why???

因为啊,使用补码,可以将符号位和数值域统 一处理

同时计算机计算减法不是正常的相减而是,换种方式

举个栗子

2-3 ,在计算机就是 2+(-3)

下面给大家引入一个新的知识点,重点哦!

大小端介绍
什么大端小端:
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地
址中。

是不是不容易看懂,接下来有请代码

 在vs2020编译器中,为小端(存储)模式,并且为了方便观看,内存中的二进制转化为十六进制了

下面这个代码可以让你知道你的当前机器是大端模式还是小端模式

#include <stdio.h>
int check_sys()
{
 int i = 1;
 return (*(char *)&i);
}
int main()
{
 int ret = check_sys();
 if(ret == 1)
 {
 printf("小端\n");
 }
 else
 {
 printf("大端\n");
 }
 return 0;
 }

首先,定义一个i,赋值给1;我们&a得到,0x00000001

如果是小端储存的,就是 01 00 00 00;因为int在内存中是4个字节,所以01为一个字节;

反之,就是大端储存, 00 00 00 01 

最后一个小测试

我们看下面这列代码

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

小提示:signed 有符号整形提升按符号位提升, unsigned 无符号整型提升补0

请读者猜猜看 a,b,c 分别是多少?

答案放在结尾,顺带一份晚霞送给正在努力改变自己的各位

 

 

 猜对了嘛?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值