C语言基础——数据

数据

四种数据类型:整型浮点型指针结构体

q:为什么要设计不同的数据类型?

a:我们需要数据进行存储和运算,如果各种数据都用相同的方法进行存储,很可能造成极大的空间浪费。比如说一个比较小的整数,用1个字节就能存储,你不加区分的用最大的8个字节去存储,那就浪费了7倍资源。所以对数据类型极性区分,是为了在有限资源中进行高效的存储和运算。

基本数据类型

整型

基础的有以下四种类型:

  • 字符 char
  • 短整型 short 或者写成 short int
  • 整型 int
  • 长整型 long 或者写成 long int

但是对于这四种类型,又有 singed和unsinged两种修饰,前者表示有符号可以表示负数,后者没符号表示非负数。

范围如下:

类型 字节 位数 范围
char 1个字节 8 0 ~ 127
singed char 1个字节 8 -127 ~ 127
unsinged char 1个字节 8 0 ~ 255
short 2个字节 16 -32767 ~ 32767
unsinged short 2个字节 16 0 ~ 65535
int 一般4个字节 32 -2147483647 ~ 2147483647
unsigned int 一般4个字节 32 0 ~ 4294967295
long 一般也是4个字节 32 -2147483647 ~ 2147483647
unsinged long 一般也是4个字节 32 0 ~ 4294967295
long long 8个字节 64 -2^64+1 ~ 2^64-1

表示方法:

十进制的跟以前一样 24

八进制的在前面加0 024

十六进制的前面加0x 0x24

注:表示范围跟编译器有关,int有时可以是16位,也可以是32位。但是有一个原则:short最多跟int一样长,long最少跟int一样长

浮点类型

存储小数用的。有三种类型:float、double、long double。

浮点数的存储,以32位的float为例:

任何浮点数都可以转换成 ( − 1 ) S ∗ ( 1 + M 2 23 ) ∗ 2 E − 127 (-1)^S * (1+\frac{M}{2^{23}}) * 2^{E-127} (1)S(1+223M)2E127形式,所以存储的时候需要这三个数字属性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X9EW3evp-1623377275274)(浮点数存储.png)]

第一段,S表示符号,正负。1个bit。0表示正数,1表示负数。

第二段,E表示指数,8个bit。之所以要-127,是因为考虑到指数可以是负数,所以取一半表示负数。

第三段,M表示小数部分,23个bit。

类型 字节 位数
float 4 32
double 8 64
long double 16 128

现在的问题就是怎么把小数部分转换成二进制的M

整数可以写成 a ∗ 2 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值