gpt4 book ai didi

bit - 从 32 位整数中提取数字

转载 作者:行者123 更新时间:2023-12-05 01:23:48 26 4
gpt4 key购买 nike

我正在尝试解决编程测试中的谜题。

免责声明:这是对工作的测试,但我不是在寻找答案。我只是想了解如何执行此操作。测试要求我在 2 周内针对一组问题提出一组解决方案,而不是要求我孤立地得出解决方案。

所以,问题:

我有一个 32 位数字,其位排列如下:

siiiiiii iiiiiiii ifffffff ffffffff

地点:

  • s 是符号位(1 == 负数)
  • i是16位整数
  • f是15个小数位

作业是编写将 32 位整数解码为 float 的内容。给定以下输入,它应该产生以下输出:

input            output

0x00008000 1.0
0x80008000 -1.0
0x00010000 2.0
0x80014000 -2.5
0x000191eb 3.14
0x00327eb8 100.99

我可以轻松获取数字的符号位或整数部分。我得到的标志位是这样的:

boolean signed = ((value & (1 << 31)) != 0);

我得到整数和小数部分是这样的:

int wholePart = ((value & 0x0FFFFFFF) >> 15);

int fractionPart = ((value & 0x0000FFFF >> 1));

我遇到问题的部分是获取最后 15 位中的数字以匹配预期值。我得到的不是 3.14,而是 3.4587,等等。

如果有人可以提示我做错了什么,我将不胜感激。最重要的是,经过数小时的困惑我还没有弄清楚这一点,这让我有点抓狂。 :-)

最佳答案

公司的投入没有错。小数位不代表小数点右边的文字数字,它们代表小数部分。不知道在不放弃的情况下还能怎么说。说存在分歧是不是暗示太大了?

关于bit - 从 32 位整数中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698903/

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