signed shifting

signed shifting

本文关键字:shifting signed      更新时间:2023-10-16

如何在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:usersdatuashvilidocumentsvisual studio 2010projectsbinstbinstbinst.cpp    19  1   Binst

我知道在java中有带符号的移位,那c++呢?我该怎么做呢?

c++"知道"有符号整数的移位,但是,结果是实现定义的。

在c++中,>>表示移位(对于无符号和有符号类型)。因此,编译器将您的>>>解释为>>后面跟着>(或反过来)。

第19行有3>>