关于int、byte、bit,以及函数运行桟帧的问题

本文探讨了编程中的数据类型,如int、byte和bit,介绍了不同位数的系统如何影响数据处理。进一步讲解了寻址空间,32位系统如何处理内存,并对比了大端和小端存储模式。最后,通过分析C语言的栈帧机制,阐述了函数调用的过程。文章以查询通达信股本变迁数据为例,展示了实际应用中的问题解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数据类型、byte、bit
编程中遇到很多数据类型,有int,char,float,bool等等。
数据类型往下是字节byte,比如一个int有4个byte大小,一个字符是一个byte,一个汉字是两个byte。
再往下,一个字节是4位bit。
一台机器的编译器可以是16位,或者是32位,所以int类型的大小就是不同的。除最高位的0表示正数,1表示负数外,那么最大值就是剩余位数全部为1。
所以int有最大值,再大的话就就超出了32bit操作系统的最大处理范围,溢出。
操作系统和CPU是不同的。比如说64位的CPU,但是由于安装的是32位操作系统,每次也只能处理32bit的数据,所以发挥不了64位CPU的优势。
2、寻址空间(地址空间)
32位的CPU和操作系统,一次可以处理4个byte的数据,每个数据8个bit,所以理论上存在32根地址线。
每个bit有0、1两条线路,所以理论上存在2^32的地址信息,也就是内存大小4G。
每一个物理存储空间分配一个编址,便于找到他,完成数据的读写。
对一个32bit的int12345678而言,由于是4个byte,32bit来存放的,所以按照规定(我也不知道哪里来的固定)分成4部分物理地址存放,分别是0X78 0X56 0X34 0X12。
物理地址的编号有大小,比如0x4000 0x4001 0x4002 0x4003
当高位的0X78位于高物理地址0x4003,其余依次降低,这种称为大端big-endian;当0X78位于低物理地址0x4000&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值