C++中實現無符號右移
轉自:http://blog.csdn.net/ishallwin/article/details/4795917
在Java及JavaScript中提供了無符號右移操作符“>>>”,無符號右移操作符與普通右移操作符“>>”的區別是>>在右移時將以符號擴充套件原則進行右移,即在右移過程中它將保持原有資料的正負號不變,簡單地說,就是在右移正數時高位補0、右移負數時則高位補1,而無符號右移操作符>>>在右移時不考慮符號問題,即無論右移正數還是負數,其最高位都是補0。
無符號右移本質上是將被右移的數所有儲存位都視為資料位,因此很容易想到,如果想在C++中實現無符號右移,可以先將擬進行無符號右移的數轉換成無符號型別,然後執行普通右移就可以了。
以下是在VS2003中編寫的驗證程式碼:
[cpp] view plaincopy
- #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
相關文章
- JavaScript >>> 三個大於號無符號右移運算子JavaScript符號
- JavaScript >> 有符號右移運算子JavaScript符號
- 現實生活中的視覺符號視覺符號
- C++中的&引用符號全解C++符號
- [C]有符號數和無符號數符號
- python 中 *符號Python符號
- IDEA出現Cannot resolve symbol “xxx”(無法解析符號)IdeaSymbol符號
- 二分查詢實現符號表符號
- C++ 提示未宣告的識別符號C++符號
- java基本無法-識別符號Java符號
- Verilog有符號數、無符號數之間的賦值與運算符號賦值
- HTML 中的特殊符號HTML符號
- C++與Rust引用外部符號的比較C++Rust符號
- 無法解析外部符號:AdjustTokenPrivileges和GetAstncKetState符號AST
- FastHook——實現.dynsym段和.symtab段符號查詢ASTHook符號
- Yaml中特殊符號"| > |+ |-"的作用YAML符號
- latex 中的存在,任意, ξ 符號符號
- SICP:符號求導、集合表示和Huffman樹(Python實現)符號求導Python
- VS2017無法解析得外部符號符號
- package.json 中的版本號,符號 ~ 與 ^ 的區別及其他符號的含義PackageJSON符號
- CSS @ 符號CSS符號
- 符號(註釋符+轉義符+接續符)符號
- 回車符號 ‘ ’ 的實際應用符號
- latex 中求和符號、箭頭問題符號
- 表格中輸入特殊符號和公式符號公式
- 對C語言中無符號型別的建議C語言符號型別
- dotNet符號檔案(pdb),符號包(snupkg)和SourceLink符號
- c++物件建立帶括號與無括號的區別C++物件
- Linux中訊號量的實現Linux
- 識別符號符號
- 流程圖符號流程圖符號
- 找不到符號符號
- 符號連結符號
- vue專案中@符號沒有路徑提示Vue符號
- Linux中的特殊符號含義及作用!Linux符號
- PAT1008 陣列元素迴圈右移問題(java實現)陣列Java
- C++ VS單例模式報 錯誤 LNK2001 無法解析的外部符號 private: static class SingletonPattern錯誤C++單例模式符號
- 深入理解ES6--6.符號與符號屬性符號
- latex 屬於符號和根號符號