zoukankan      html  css  js  c++  java
  • Little-endian和Big-endian模式

    这段C程序的结果是多少?

    嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式
    的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是
    从高字节到低字节。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假
    设从地址0x4000开始存放)为:

    而在Big-endian模式CPU内存中的存放方式则为:

    32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开
    始存放)为:

    而在Big-endian模式CPU内存中的存放方式则为:

    在本题中E的ASCII值是0x45(0100 0101),M是0x4D(0100 1101),它们在内存中的表现如
    下:

    结构bitstruct是9位的,执行copy以后,b在内存中如下:

    b1占5位:

    中间跳过2位,b2占2位:

    计算的时候再把它们逆转过来,就成了下面的形式:

    b1最高位是0,表示其是正数,其原码跟补码一致,所以b1=2^0+2^2=5。
    b2最高位是1,表示其是负数,其原码要进行取反操作再加1为10所以b2=-(2^1)=(-2)。
    答案:5,-2

  • 相关阅读:
    HDOJ 1069_大二写
    HDOJ 2037:今年暑假不AC_大二写
    第二次HDOJ:1058
    HDOJ 1019
    第二次 HDOJ 1003
    第二次做HDOJ 1051
    memset()的用法
    数据结构中的频度含义
    程序框图的书写
    python课堂整理22----装饰器进阶
  • 原文地址:https://www.cnblogs.com/yihujiu/p/6368701.html
Copyright © 2011-2022 走看看