signed shifting
signed shifting
如何在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>>
相关文章:
- 在 sprintf 中从 'signed char*' 到 'char*' 的转换无效
- 使用函数时出现"'<' signed/unsigned mismatch "错误
- 为什么仅 -fno-signed-0 就可以实现优化,而似乎也需要 -ffinite-math-only (gcc)
- 你什么时候会使用"signed char"而不是"unsigned char"?
- unsigned int/signed int/long-long:无法解释的输出
- 无法使用类型 'const char [X]' 的左值初始化类型 'const signed char *' 的成员子对象
- HEVC 解码器端口 Android 警告:从 'signed char*' 到 'char const* 的转换无效*
- 不明白"assuming signed overflow"警告
- 为什么 foo(short int *) 和 bar(signed short *) 认为 QT 的签名不同
- "unsigned"可以使用哪些类型?什么时候需要"signed"?
- "signed"关键字的实际用途是什么?
- 对'icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)' 的未定义引用
- 由于"signed char"和"char",系统头文件中的重定义错误
- unsigned short和signed short比较wierd行为
- 在c++中默认为' int ' ' signed long int '
- Convert signed short with bitset
- Signed zero linux vs windows
- 内存的字节读取:"signed char *" vs "unsigned char *"
- c++中char和signed char的区别
- signed shifting