gpt4 book ai didi

algorithm - 将十进制数转换为二进制数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:57 25 4
gpt4 key购买 nike

我目前正在阅读 Charles Petzold 的《代码》一书。他在其中解释了如何使用以下模板将十进制数转换为二进制数:

                [ ]   [ ]   [ ]   [ ]   [ ]   [ ]   [ ]   [ ]
÷128 ÷64 ÷32 ÷16 ÷8 ÷4 ÷2 ÷1
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]

在书中,他对如何使用模板的解释是这样的:

“把完整的十进制数(小于等于255)填入上面的方框内左角。将该数字(红利)除以第一个除数 (128),如表明的。把商放在下面的方框里(左下角的方框),然后右边框中的剩余部分(顶行的第二个框)。第一个余数是下一次计算的除数,它使用 64 的除数。以相同的方式继续通过模板。

请记住,每个商将为 0 或 1。如果被除数小于除数,则商为 0,余数就是被除数。如果被除数大于或等于除数,则商为 1,余数为除数 - 除数。以下是 150 的处理方式:“

                [150]  [22]   [22]   [22]   [6 ]   [6 ]   [2 ]   [0 ]
÷128 ÷64 ÷32 ÷16 ÷8 ÷4 ÷2 ÷1
[1 ] [0 ] [0 ] [1 ] [0 ] [1 ] [1 ] [0 ]

但是我很疑惑!当我按照指示进行计算时,我得到了截然不同的结果。我正在做的事情如下:

150 ÷ 128 = 1.171875(我没看到上面的 22 是从哪里来的?)所以,我在 150 下方的方框里放一个 1,然后携带 171875 并将其用作下一次计算的红利,这当然让我陷入各种问题,最终,不是二进制数 10010110!

有人能告诉我哪里错了吗?

最佳答案

22 是 150/128 的余数。

既然您已经确定 150“中”有 1128,并为该位赋予了一个值,您就可以忘记 150“中”的 128,所以您将它从 150 中拿走,留下我们的 22。然后现在是值 64 的数字的时间:64 不进入 22,因此该数字为 0。对于值 32 的数字也类似。然后对于值 16 的数字:16 进入 22 一次,所以那里有一个 1 数字,现在你已经完成了 22 中的 16,所以把它拿走——留下 6。依此类推。

(考虑一个类似的以 10 为基数的情况,比方说 309。取 100 列;309 中有 3 100,所以你在那里放一个 3。现在还剩下 9。然后取 10 列;有 0 9 中有 10 个,所以你在那里放一个 0。然后是 1 列:9 中有 9 个 1,所以你在那里放一个 9。现在什么都没有了——你已经完成了。)

我有一种可怕的感觉,这可能会造成混淆而不是澄清,但无论如何我就是这么想的。

关于algorithm - 将十进制数转换为二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1591241/

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