gpt4 book ai didi

十六进制数和逻辑运算符

转载 作者:行者123 更新时间:2023-12-04 19:19:33 25 4
gpt4 key购买 nike

要解决的问题:

Write hexadecimal value of 32-bit variable i (type Longint) after executing code in Pascal. Code will translate for little-endian platform. i:=-20; i:=($FFFF xor (i shr 2)) and not($50 shl 16);

我需要知道的是:括号 (i shr 2) 和 ($50 shl 16) 中发生了什么。

我的想法是:十六进制的 i (-20):FFEC(但也许感谢 little-endian,它是 CEFF)。($50 shl 16) - 我认为因为 $50 只有 8 位,所以 shl 16 只会使它为零。还是会变成 500000 美元?

最佳答案

i shr 2 = 将 i 右移 2 个位置,大致是 i = i/4

$50 shl 16 = 将 $50 左移 16 个位置,这是在寄存器中完成的(参见 here)

$0000 0050 -> $0050 0000

现在开始计算i:

32 位值的 -20:

$ffff ffec

-20 的 SHR 2:(在寄存器中完成)

ffff ffec -> 3fff fffb

然后异或(在寄存器中完成)

0000 ffff
3fff fffb
----------
3fff 0004

然后$0050 0000的NOT:(逻辑非=位补,非2补)

0050 0000 -> ffaf ffff

最后是 AND:(在寄存器中)

3fff 0004
ffaf ffff
--------
3faf 0004

这是“i”的值,用于任何基于寄存器的计算。

小字节序只对内存存储有影响,其中 i 存储为 0400 af3f。

关于十六进制数和逻辑运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28561373/

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