关于Little Endian与Big Endian的存储困惑及技术问询
关于Big Endian下short类型数值计算的清晰解释
嘿,我来帮你把这个困惑点彻底搞明白~
你已经抓准了Big Endian的核心规则:先存储数据的高位端字节,结合你提到的场景,咱们一步步拆解:
- 首先确认:
short类型确实占2个字节,假设内存中地址0的字节是W = 0x12,地址1的字节是X = 0x34。 - 在Big Endian机器上,低地址存储的是数值的最高有效字节,高地址存储的是最低有效字节。也就是说,地址0的
0x12是这个short值的高位部分,地址1的0x34是低位部分。
那要算出这个short的实际数值,只需要把高位字节左移8位(因为一个字节占8比特,左移后就到了高位的位置),再和低位字节做按位或运算:
0x12 << 8 | 0x34 = 0x1200 | 0x34 = 0x1234
转换成十进制的话就是 4660。
为了帮你对比理解,咱们顺便提下Little Endian的情况:如果是Little Endian机器,低地址存的是低位字节,那计算方式就变成:
0x34 << 8 | 0x12 = 0x3400 | 0x12 = 0x3412
十进制就是 13330,这样一对比,两种字节序的差异就更直观了。
内容的提问来源于stack exchange,提问作者user9583381
相关产品推荐
相关产品推荐

