调试技巧及其数据的储存形式

目录

大端与小端的存储

浮点型数据存储


一个面试题如下

int main()
{
    int i = 0;
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    for (i = 0; i <= 12; i++)
    {
        arr[i] = 0;
        printf("hello bit\n");
    }
    return 0;
}

问这段代码最后输出结果是什么,因为在栈中地址是由高相低存放的先为arr数组创建了地址,然后才是i的空间;

大端与小端的存储

什么大端小端:
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位 , ,保存在内存的高地
址中。
为什么有大端和小端:
为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元
都对应着一个字节,一个字节为 8
。但是在 C 语言中除了 8 bit
char 之外,还有 16 bit short 型, 32 bit long 型(要看具体的编
译器),另外,对于位数大于 8
的处理器,例如 16 位或者 32 位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如
何将多个字节安排的问题。因此就
导致了大端存储模式和小端存储模式。
例如:一个 16bit short x ,在内存中的地址为 0x0010 x 的值为 0x1122 ,那么 0x11
高字节, 0x22 为低字节。对于大端
模式,就将 0x11 放在低地址中,即 0x0010 中, 0x22 放在高地址中,即 0x0011 中。小端模式,
刚好相反。我们常用的 X86 结构是
小端模式,而 KEIL C51 则为大端模式。很多的 ARM DSP 都为小端模式。有些 ARM 处理器还可以
由硬件来选择是大端模式还是小端
模式。
一般企业面试可能会让你判断机器是大端存储还是小端存储,可以用以下代码验证

 通过以上代码我们可以断定那我们现在所用机器就是使用小端存储模式

几个练习可以更让我们深入了解代码储存形式

 上面char a打印出来为-1,是因为整形赋给字符型是要发生截断的,因为数据在内存中都是以二进制补码方式进行存放,而整形为32个bit位,赋给a时会发生截断,然后再以最高位进行整形提升,提升之后再转换为源码方式进行打印,所以上面a与b打印结果是相同的。

而c打印出来为255,是因为它是一个无符号数进行打印的,无符号数最高位不是符号位,所以当它发生截断再进行整形提升的时候,高位补的为0,又因为无符号数原,反,补相同,所以打印出来为255。

浮点型数据存储

emo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值