数据的存储

1.数据的类型介绍

我们学习到一些内置类型:

char

int等

而这类类型的意义:

1.开辟了内存空间的大小(大小决定了使用范围)

2.如何看待内存空间的视角。

ps:unsigned 是无符号型

eg:unsigned int a;

2.整形在内存中的存储

我们是如何在内存存储数据的呢?

例如

int a = 20;
int b = -20;

我们都知道一个int 类型占用四个字节

想知道如何存储的,我们就要学习到以下知识

2.1 原码 、反码、补码

计算机内部的整数有三种二进制存储方式:原码,反码,补码。

上述三种:都包含符号位、整数位俩部分

符号位: 1表示负数 0表示 整数

但是如果这个数是正整数原码,反码,补码都一样;

原码:直接通过正负的形式写出的二进制序列就是原码!

反码:原码的符号位不变,其他位按位取反得到

补码:反码+1

补码—————>原码 : 也可以用先取反在+1;

在计算机中 用数据的补码来存储

原因在于 :可以将符号位与数值统一处理;

同时加法和减法可以统一处理

00000000000000000000000000000001    1//如果用原码加减
10000000000000000000000000000001    -1

10000000000000000000000000000010     //结果并不是 0

但如果用补码计算

00000000000000000000000000000001    1
//反码原码补码相同
10000000000000000000000000000001    //原码

11111111111111111111111111111110    //反码

11111111111111111111111111111111    //补码

//加减之后
100000000000000000000000000000000
//注意 此时 发生了截断!

 2.2 大小端介绍

假设 一个16进制的数据

 

小端字节序存储反之;

       让我们来做几个题吧!

1.如何实现一个程序来查看本电脑的存储方式是大端还是小端?

代码实现

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

 2.

观察以下代码;

int main() {
	char a = -1;
	signed char b = -1;
	unsigned char c = -1;
	printf("%d %d %d ", a, b, c);
	return 0;
}

a,b,c的值是多少?

 所以答案是 -1 -1 255;

  

 记住 先发生截断、整形提升在 打印!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值