首页 > 其他分享 >数据的存储

数据的存储

时间:2023-02-07 20:33:17浏览次数:46  
标签:存储 反码 字节 int 补码 类型 数据 原码

一.c语言类型

内置类型

可通过#include<limits.h>查询

1.整型

char:

unsigned char-128~127;signed char0~255

short:

unsigned short[ int ]-32768~32768;signed short[ int ]0~65535

int:

unsigned int 2147483648~2147483647;signed int 0~4294967295

long

unsigned long[ int ]0~4294967295;signed long[ int ]2147483648~2147483647

2.浮点型

float3.4*10^(-38)~3.4*10^(38)

double1.7*10^(-308)~1.7*10^(308)

自定义类型

1.构造类型

数组类型   int [xxx]

结构体类型struct

枚举类型enum

联合类型union

2.指针类型

int* p

char* pc

float* pf

void* pv

3.空类型

void表示空类型(无类型)

通常应用于函数的返回类型、函数的参数、指针类型

二.整型在内存中的存储

1.了解原码、反码、补码(cpu只有加法器)

计算机中的整型有符号数有三种表示方法:原码、反码、补码

三种表示方法均有符号位和数值位两部分,符号位都是用“0”表示正数 “1”表示负数

注:无符号的原码、反码、补码相同​;有符号数的正数的原码、反码、补码相同

​​​(笔试题)输出这段代码的结果(关于进制位的代码)​

原码

直接将二进制按照正负数的形式翻译为二进制就可以了

反码

将原码的符号位不变,其他位次依次按位取反

补码

反码加一

计算机中存的是二进制的补码 但是显示的是十六进制

一个字节=8个比特位=8个二进制位=2个16进制位

三.浮点型在内存中的存储

float、double、long double

浮点数表示的范围:float.h中定义

以下代码看得整型和浮点型的存储方式是不同的

#include<stdio.h>
int main()
{
int n=9;
float* pFloat=(float*)&n;
printf("n的值为:%d\n",n);
printf("pFloat的值为:%f\n",*pFloat);

*pFloat=9.0;
printf("num的值为:%d\n",n);
printf("pFloat的值为:%f\n",*pFloat);
return 0;
}

 结论就是浮点数形式存就按浮点数形式取。整数形式存,按整数形式取,不要搞混了

四.大小端介绍

数据在内存中存储字节的一个顺序

大端(存储)模式,是指数据的位保存在内存的地址中,而数据的高位保存在内存的低地址中

小端(存储)模式,是指数据的位保存在内存的地址中,而数据的高位保存在内存的高地址中

例题:(面试题)请简述大端字节和小端字节序的概念,设计一个程序来判断当前机器的字节序

​(面试题)请简述大端字节和小端字节序的概念,设计一个程序来判断当前机器的字节序​

#include<stdio.h>
int check_sys()
{
int a=1;
return *(char*)&a;
//返回1:小端
//返回0:大端
}

int main()
{
//返回1:小端
//返回0:大端
int ret=check_sys();
if(ret==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}

补充:指针类型的意义:决定了指针解引用操作能访问几个字节;决定了指针+1 -1时改变的字节



标签:存储,反码,字节,int,补码,类型,数据,原码
From: https://blog.51cto.com/u_15899086/6042674

相关文章