gpt4 book ai didi

java - 一条语句中的多个按位移位

转载 作者:行者123 更新时间:2023-12-02 01:55:56 25 4
gpt4 key购买 nike

我正在尝试编写一个方法,该方法接受 32 位 int 和表示 32 位 int 中的字节的整数,并返回传入的字节。即 getByte(0x56781234, 0);//=> 0x34。我的思考过程是,如果我可以将 int 右移到一个位置,其中我想要的字节是 int 的最后一个字节,我可以将它与 0xFF 进行 AND 以获得该值。所以类似,

public int getByte(int num, int byteVal) {
return ((num >> 8) >> byteVal) & 0xFF;
}

但是我知道我的逻辑有缺陷。我试图在一份声明中多次转换。注意:没有乘法。建议?

最佳答案

您想要右移 0、8、16 或 24,具体取决于 byteVal 的值。在您的示例中,即使 byteVal 为 0,您也已经右移了 8,所以这不是正确的方法。

那么,如何将 0/1/2/3 转换为 0/8/16/24...如果有一个移位操作就可以做到这一点!

return (num >> (byteVal << 3)) & 0xFF;

关于java - 一条语句中的多个按位移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286724/

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