• 5. 链接


    练习5-1

    假定一个程序在一个源文件中包含了声明:

      long foo;

    而在另一个文件中包含了:

      extern short foo;

    又进一步假定,如果给long类型的foo赋一个较小的值,例如37,那么short类型的foo就同时获得了一个值37.我们就能够对运行改程序的硬件做出什么样的推断?如果short类型的foo得到的值不是37而是0,我们又能够做出什么样的推断?

      在解答该问题之前,关于数据如何在内存中存储,我们引入两个概念。

      1. 大端模式(big endian):最低字节放在高位字节,可称高位优先,我们以unsigned int x = 0x12345678为例

        高地址
        ---------------
        buf[3] (0x78) -- 低位
        buf[2] (0x56)
        buf[1] (0x34)
        buf[0] (0x12) -- 高位
        ---------------
        低地址

      2. 小端模式(little endian):最低字节放在低位字节,可称低位优先,我们仍然以unsigned int x = 0x12345678为例

        高地址
        ---------------
        buf[3] (0x12) -- 高位
        buf[2] (0x34)
        buf[1] (0x56)
        buf[0] (0x78) -- 低位
        --------------

     

     现在我们就可以回答这个问题了,输出结果为37时,为小端模式,而输出结果为0是则为大端模式。

  • 相关阅读:
    OpenWrt编译系统(1)之make之前
    IoT设备WiFi配网及现状
    Linux系统时间、时区、夏令时杂谈
    串口通信概念整理
    socket编程进阶之路
    段错误
    gitlab将分支代码合并到master上
    dpkg 管理二进制包
    linux 命令关闭网络
    pwn之exp问题反馈和ASLR认知
  • 原文地址:https://www.cnblogs.com/hebust-fengyu/p/12036928.html
Copyright © 2020-2023  润新知