C++ 给定整数的2-adic数

C++ 给定整数的2-adic数,c++,binary,C++,Binary,我正在阅读一节关于二进制递归Gcd算法的内容,其中给出了这个定义 让v_2(a)表示a的2-adic赋值,即a的二进制表示的最小符号位中连续零的数量,因此我试图找到v_2(a),这里是代码 #include <iostream> using namespace std; int main() { int total=0; int n,k; cout << "enter value n "; k=0; cin >> n;

我正在阅读一节关于二进制递归Gcd算法的内容,其中给出了这个定义 让v_2(a)表示a的2-adic赋值,即a的二进制表示的最小符号位中连续零的数量,因此我试图找到v_2(a),这里是代码

#include <iostream>
using namespace std;
int main()
{
    int total=0;
    int n,k;
    cout << "enter value n ";
    k=0;
    cin >> n;
    while(k!=1)
    {
        if (k==1)
        {
            break;
        }
        k=n%2;
        n>>=1;
        total++;

    }
    cout<<total<<"  "<<endl;

    return 0;
}
#包括
使用名称空间std;
int main()
{
int-total=0;
int n,k;
cout>n;
while(k!=1)
{
如果(k==1)
{
打破
}
k=n%2;
n> >=1;
总计++;
}

cout因为当到达
k==1
时,您正在运行
total++
,所以您已经太晚了

k=n%2;
行之后移动
if(k==1)

注意:
k
变量实际上不是必需的。您可以将循环简化为:

while((n%2)==0) {
  n>>=1;
  total++;
}

当到达
k==1
时,您正在运行
total++
,此时您就已经太晚了

k=n%2;
行之后移动
if(k==1)

注意:
k
变量实际上不是必需的。您可以将循环简化为:

while((n%2)==0) {
  n>>=1;
  total++;
}