C++中实现无符号右移

 

JavaJavaScript中提供了无符号右移操作符“>>>”,无符号右移操作符与普通右移操作符“>>”的区别是>>在右移时将以符号扩展原则进行右移,即在右移过程中它将保持原有数据的正负号不变,简单地说,就是在右移正数时高位补0、右移负数时则高位补1,而无符号右移操作符>>>在右移时不考虑符号问题,即无论右移正数还是负数,其最高位都是补0

无符号右移本质上是将被右移的数所有存储位都视为数据位,因此很容易想到,如果想在C++中实现无符号右移,可以先将拟进行无符号右移的数转换成无符号类型,然后执行普通右移就可以了。

以下是在VS2003中编写的验证代码:

#include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int nOrg; cout << "被移位数:"; cin >> nOrg; cout << "有符号右移2位:" << (nOrg >> 2 ) << endl; unsigned int nuNum = (unsigned)nOrg; cout << "转换为无符号数:" << nuNum << endl; cout << "无符号右移2位:" << (nuNum >> 2 ) << endl; return 0; }

 

梦断酒醒的博客http://www.yanzhijun.com

你可能感兴趣的:(C++)