签约转移

时间:2011-10-15 11:55:23

标签: c++ bit-manipulation

如何在C ++中实现有符号移位?例如这段代码

#include<iostream>
using namespace std;

int bit_number( int x){
 int total=0;
 while(x){
  total++;
  x>>=1;
 }

 return total;
}

int main(){
 int x=10;
 //cout<<bit_number(x)<<endl;
 int a=bit_number(x);
 int b=2*a;
 x<<=(b-a);
 x=x>>>(b-a);

 while(x!=0){
  int k=x%2;
  x=x>>1;
  cout<<k<<endl;
 }

 return 0;
}

告诉我这个错误:

Error   1   error C2059: syntax error : '>' c:\users\datuashvili\documents\visual studio 2010\projects\binst\binst\binst.cpp    19  1   Binst

我知道在java中有签名转换,C ++怎么样?我该怎么办?

2 个答案:

答案 0 :(得分:1)

你有3&gt;&gt;&gt;在第19行(请参阅您的错误消息)

答案 1 :(得分:1)

C ++“知道”移位有符号整数,但结果是实现定义。

在C ++中,>>表示移位(对于无符号和有符号类型)。因此,编译器会将您的>>>解释为>>,然后是>(或者相反)。