gpt4 book ai didi

linux - 计算机理论,大端和小端

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:21 27 4
gpt4 key购买 nike

目前,我正在学习计算机理论、汇编,而且我被困在大端和小端。

我检查了 EIP 寄存器(在 Linux 中使用命令 x/8xw),它的值是 0x00fc45c7(一个字,4 个字节)。当我请求字节而不是单词 (x/8xb) 时,我得到一个相反的序列(因为它是小端机器):c7 45 fc 00。当我请求半字 (x/8xh) 时,我得到这个序列:45c7和 00fc。这些都是平等的,我想自己检查一下。

当将第一个十六进制值(0x00fc45c7)转换为十进制值时,我得到 16532935(算法如下:16^7*0 + 16^6*0 + 16^5*15 + 16^4*12 + 16^3*4 + 16^2*5 + 16^1*12 + 16^0*7)。这是一个简单的从十六进制到十进制的转换,我明白了。

我正在看的书上有一个计算的例子,证明0x00fc45c7等同于c7 45 fc 00,计算如下:0*(256^3) + 252*(256^2) + 69*(256^1) + 199*(256^0)。

我明白,0、252、69 和 199 是值,我们将每个字节转换为十进制后得到 fc = 15*16^1 + 12*16^0 = 252、45 = 69 和 c7 = 199。我不明白的是256代表什么,我们为什么要把256提升到power?这些计算的算法是什么?如果我们不使用字节(c7 45 fc 00)而是使用半字(45c7 和 00fc)来获得与 0x00fc45c7 相同的值,它们会是什么?我已经通过互联网冲浪,但仍然没有找到任何答案。所有的文章都只是解释小端系统和大端系统之间的区别,但解释并没有深入到这个问题。非常感谢您的帮助。

最佳答案

您使用 256 是因为您可以将两个十六进制数字视为以 256 为基数的单个数字。因此,您可以假设在处理每个字节时都以 256 为基数。

关于linux - 计算机理论,大端和小端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38918729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com