如何在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 ++怎么样?我该怎么办?
答案 0 :(得分:1)
你有3&gt;&gt;&gt;在第19行(请参阅您的错误消息)
答案 1 :(得分:1)
C ++“知道”移位有符号整数,但结果是实现定义。
在C ++中,>>
表示移位(对于无符号和有符号类型)。因此,编译器会将您的>>>
解释为>>
,然后是>
(或者相反)。