首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java位操作:替换十六进制的半字节

Java位操作:替换十六进制的半字节
EN

Stack Overflow用户
提问于 2012-09-06 22:52:58
回答 1查看 2.2K关注 0票数 0

我不得不为一个家庭作业写这段代码,但我甚至不知道从哪里开始。下面是我必须编写的方法的javadoc。

代码语言:javascript
复制
/**
* Sets a 4-bit nibble in an int

* Ints are made of eight bytes, numbered like so: 7777 6666 5555 4444 3333 2222 1111 0000
*
* For a graphical representation of this:
*   1 1 1 1 1 1                 
*   5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |Nibble3|Nibble2|Nibble1|Nibble0|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* 
* Examples:
*      setNibble(0xAAA5, 0x1, 0) //=> 0xAAA1
*      setNibble(0x56B2, 0xF, 3) //=> 0xF6B2
* 
* @param num int that will be modified
* @param nibble nibble to insert into the integer
* @param which determines which nibble gets modified - 0 for least significant nibble
*            
* @return the modified int
*/

这是我所拥有的。我已经在javadoc中的第一个示例中使用了它,但我知道这并不适用于所有情况。尤其是当int != 0;

代码语言:javascript
复制
public static int setNibble(int num, int nibble, int which)
    {
    int newNibble = (num >> 4);
    newNibble = (newNibble << 4) | nibble;
    return newNibble;
    }

我是否应该使用轮班?我被告知我可以在一行代码中完成这个方法。感谢你在高级课程中的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-06 23:04:08

我建议你;

通过构造掩码并使用&

  • place要添加到右侧位置的位,使用left shift和<<

  • combine

来提取您想要保留的位

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12302794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档