gpt4 book ai didi

java - 移位位值

转载 作者:行者123 更新时间:2023-12-01 18:43:03 26 4
gpt4 key购买 nike

我最近开始自己学习java,但我在其中一个部分遇到了麻烦。今天我阅读了有关移位位值的内容,我想知道我所做的是否正确?

我想将一个值右移 16 位,然后通过将该值与 8 位掩码进行“与”来清除高 24 位。这是我的代码片段:

int shift(){
point = point >> 16; //shifts the value to the right by 16 bits
point = point & 0xFF; //clear the upper 24 bits
return point;
}

这是正确的吗?我是否正确地使用了这种技术?

谢谢!

最佳答案

Yes.
some content to fill out the 30 characters minimum length

好吧,看来这个笑话不太受欢迎,我期待人们喜欢这个讽刺的答案。哦,好吧,显然 SO 里的人比我想象的更认真。

嗯,就像其他人提到的那样,你实际上可以自己检查一下!

正如您在代码注释中所写的那样,您已经正确地将注释(人类理解)转换为代码(机器理解)。

我怎么知道你是对的?嗯,你可以查一下网上资源:

  1. 对于 bit manipulation
  2. 或者只是 this Wikipedia entry

在查阅这些资源后,到目前为止,您的代码似乎符合您的意图。

但是,你说,这是理论上的,我如何凭经验知道我的答案是正确的?

那么,你可以用这个方法:

  1. 构建一些示例测试用例。
    对于这种情况,您可以使用十六进制数字,以便您可以轻松确认它(因为您可以看到每一位)。
    例如:尝试 0xFFFFFFFF , 0x80000000 , 0xC0C0C0C0 .
  2. 手动找到正确答案。
    在这种情况下,请尝试自己移动位(使用笔和纸)
    对于 0xFFFFFFFF ,这是一个全 1 的 32 位数字,当您向右移动 16 位时,您将得到 0x0000FFFF ,这是一个 32 位数字,仅最后 16 位为 1。
    然后你用 0xFF 进行 AND 运算,这是一个 32 位数字,仅最后 8 位为 1。这将再次给你 0xFF ,因为仅在最后 8 位,两个数字的位都是 1。
    重复其他示例。您应该得到 0x000xC0另一个例子。
  3. 在这些输入上运行您的代码。
    要运行代码,您可以使用 Java 编译器(在大多数系统中通常称为 javac)。
    如果你真的是初学者,你可以尝试在线编译器,如 this
    只需将代码放在那里并运行(使用输入/输出 (I/O) 管理,解释 here )
  4. 将您的输出与程序输出进行比较。
    通常,仅此一项就可以让您确信您的代码是正确的。
    但有时会出现一些棘手的情况,即使对于某些小示例来说代码是正确的,但也会导致代码不正确。幸运的是,我们已经使用上面的理论答案检查了逻辑。

所以我希望这会有所帮助!

关于java - 移位位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19109376/

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