Java-将整数的不同位设置为零

Java-将整数的不同位设置为零,java,bitwise-operators,Java,Bitwise Operators,以下是描述: 为了阻止疯狂的编码者和邪恶的天才,你需要破译他发给手下的加密信息。这条信息包含几个数字,当输入到一台超级计算机上时,将向天空发射一枚导弹,挡住太阳,使地球上所有的人都暴躁和悲伤 您发现有些数字的二进制表示形式中有一个经过修改的单位数。更具体地说,在给定的数字n中,右侧的第k位最初设置为0,但其当前值可能不同。现在由您编写一个函数,将n的第k位改回0 范例 对于n=37和k=3,输出应为 killKthBit(n,k)=33 3710=1001012~>1000012=3310 对于

以下是描述:

为了阻止疯狂的编码者和邪恶的天才,你需要破译他发给手下的加密信息。这条信息包含几个数字,当输入到一台超级计算机上时,将向天空发射一枚导弹,挡住太阳,使地球上所有的人都暴躁和悲伤

您发现有些数字的二进制表示形式中有一个经过修改的单位数。更具体地说,在给定的数字n中,右侧的第k位最初设置为0,但其当前值可能不同。现在由您编写一个函数,将n的第k位改回0

范例

对于n=37和k=3,输出应为 killKthBit(n,k)=33

3710=1001012~>1000012=3310

对于n=37和k=4,输出应为

killKthBit(n,k)=37

第4位已经是0(看起来疯狂的编码器忘记加密这个数字),所以答案仍然是37。”

我找到了一个解决方案,但我无法理解:

int killKthBit(int n, int k)
{
  return n & ~(1 << (k - 1)) ;
}
int killKthBit(int n,int k)
{

返回n&~(1)函数的详细说明

表达式
1这里是我的尝试

//Returns a number that has all bits same as n
// except the k'th bit which is made 0
int turnOffK(int n, int k)
{
    // k must be greater than 0
    if (k <= 0) return n;

    // Do & of n with a number with all set bits except
    // the k'th bit
    return (n & ~(1 << (k - 1)));
}
//返回一个所有位都与n相同的数字
//除了第k位是0
内部岔道(内部北面,内部北面)
{
//k必须大于0
if(k)