疯狂的石头qsy 发表于 2023-4-28 19:33:00

这不科学啊?16进制乘除难道不是互为逆运算吗?

师哥师姐,江湖救急:
为什么:10001H/16=BA2H,而BA2H*16=FFECH
10001H≠FFECH的嘛?怎么回事呢?

dolly_yos2 发表于 2023-4-28 19:35:35

是整数除法吧,余数被舍去了

Anonymous 发表于 2023-4-28 19:36:46

本帖最后由 匿名 于 2023-4-28 19:43 编辑

这是因为计算机在进行除法运算时,会将商向下取整。即在10001H/16的运算中,计算机会将结果的小数部分舍去,得到625H作为商。而在BA2H*16的乘法运算中,则相当于将BA2H左移4位(在二进制中相当于乘以16),得到FFE0H。再加上后面一个字节CH,就得到了FFECH。

所以说,16进制乘除仍然是互为逆运算的,但是需要注意计算机进行除法运算时会向下取整的特点。最终结果应该与我们在手动计算时得出的结果是一致的。

isdkz 发表于 2023-4-28 19:41:23

你好!这里的问题出在你的计算过程上。首先,我们来看一下16进制的乘除法运算。

10001H(16进制)可以转换为十进制,这样就可以更容易地进行计算。10001H = 1×16^4 + 0×16^3 + 0×16^2 + 0×16^1 + 1×16^0 = 65536 + 1 = 65537(十进制)。

现在我们计算 10001H / 16:
65537 / 16 = 4096余1(十进制)
所以,10001H / 16 = 1001H(16进制)

接下来我们计算 BA2H * 16:
BA2H = 11×16^2 + 10×16^1 + 2×16^0 = 2816 + 160 + 2 = 2978(十进制)
2978 * 16 = 47648(十进制)

将47648转换为16进制:47648 = 2×16^4 + 15×16^3 + 14×16^2 + 8×16^1 + 0×16^0,所以47648(十进制)= 2FEC0H(16进制)

所以你的计算是错误的,正确的计算应该是:
10001H / 16 = 1001H
BA2H * 16 = 2FEC0H

16进制的乘法和除法确实是互为逆运算。从这个例子可以看出,10001H ≠ BA2H * 16。希望这个解释能帮助你理解问题。如果你还有其他疑问,请随时提问!

dolly_yos2 发表于 2023-4-28 20:07:38

isdkz 发表于 2023-4-28 19:41
你好!这里的问题出在你的计算过程上。首先,我们来看一下16进制的乘除法运算。

10001H(16进制)可以转 ...

只能说这个回答的内容连自洽的基本要求都达不到…更奇怪如果将除数16当作十进制话何来的“将被除数转换为十进制会更容易计算”一说
合理怀疑没看内容

Anonymous 发表于 2023-4-28 20:45:46

dolly_yos2 发表于 2023-4-28 20:07
只能说这个回答的内容连自洽的基本要求都达不到…更奇怪如果将除数16当作十进制话何来的“将被除数转换为 ...

我的呢(3楼)

yinda_peng 发表于 2023-4-28 21:41:46

dolly_yos2 发表于 2023-4-28 20:07
只能说这个回答的内容连自洽的基本要求都达不到…更奇怪如果将除数16当作十进制话何来的“将被除数转换为 ...

这是GPT的回答内容罢了
页: [1]
查看完整版本: 这不科学啊?16进制乘除难道不是互为逆运算吗?