Java 为什么它会得到这样的一个位?

Java 为什么它会得到这样的一个位?,java,bit-manipulation,bit,Java,Bit Manipulation,Bit,我正在查找应该从int中获取一个位的代码部分。 详情如下: private int getBit( int token, int pos){ return ( token & ( 1 << pos ) ) != 0 ? 1 : 0; } private int getBit(int-token,int-pos){ return(token&(1您的版本返回0或1您的版本不返回位置pos处的位值。它返回值0或2^(pos-1)。您的版本错误。当您执行 retu

我正在查找应该从int中获取一个位的代码部分。
详情如下:

private int getBit( int token, int pos){  
   return ( token & ( 1 << pos ) ) != 0 ? 1 : 0;   
}
private int getBit(int-token,int-pos){

return(token&(1您的版本返回0或
1您的版本不返回位置pos处的位值。它返回值0或2^(pos-1)。

您的版本错误。当您执行

return token & ( 1 << pos );

returntoken&(1当然,您可以使用

(token >> pos) & 1

第二个版本将返回
1一种避免分支但有效的替代方法:
return(token>>pos)&1
。这是正确的。如果您想更改较少的现有代码,也可以执行
(token&(1
(token >> pos) & 1