【C语言基础】数据类型

数据类型

image-20220325102928507

一、singed int/unsigned int

​ 都占用 4 个字节,即:32bit

singed int取值范围:-2^31 ~ 2^31-1

unsigned int: 取值范围:0 ~ 2^32

数据以补码的形式存放在内存中

二、float/double

float:占用4个字节(32bit)

image-20220325103302748

double:占用8个字节(64bit)

image-20220325103613850

​ 浮点数在计算机中,用科学计数法表示,在现实中,一个科学计数法的数字可以被写为: (a=1~9)

image-20220325104258737

​ 推广到二进制中,可以写成:

​ (a=1)

image-20220325104341155

image-20220325105800766

eg:

float a = 0.15625;

​ 十进制小数写成二进制,乘2取整,顺序排列

image-20220325110011986

​ 二进制小数结果为0.00101,为了调整成整数位为1的形式,需要左移3位,因此结果可以表示成:

image-20220325110111487

​ 指数位为-3,偏移+127得到指数位置结果为124,即 0111 1100。

​ 因此float能表示数据的范围就可以知道了,最大最小数值为:

image-20220325110743084

​ 逼近image-20220325110758931

转化为十进制为:

image-20220325110818621

因此float常说的数字表示范围如下:

image-20220325110845834

double和float类似,不再赘述

三、char

​ 占用1个字节(8bit)在内存中直接存ASCII码

例如char a = ‘1’,ASCII码为49,转为16进制为0X31,但是当char a = 1时,存的就是1

​ 一般用char型数组存字符串。

四、数据类型转换

4.1 自动(隐式)转换

​ 自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生:

image-20220325123734628

  • 转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低

  • 所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算

  • char 和 short 参与运算时,必须先转换成 int 类型。

    4.2 强制类型转换

    强制类型转换的格式为:

    (type_name) expression
    

    type_name为新类型名称,expression为表达式

​ 强转有时候会出现不可预料的后果。

五、数据类型-寄存器

​ 在C语言编程中,定义的所有数据类型的数据都是以补码的形式存在内存中,但是单片机是怎么知道哪个是char哪个是int呢?

​ 这个就是汇编中的知识了,基本的汇编数据类型可没有浮点型,这个还在研究中。

参考:

cnblogs.com/xiglingui/p/14802623.html

https://zhuanlan.zhihu.com/p/375156201

posted @   伦敦烟云  阅读(309)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示