C++ 移位运算 浅析
2015-06-27 16:46
260 查看
移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。
逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。
算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。
c++中,整数分有符号数和无符号数两种,对于这两种数做左移、右移运算,稍有区别:
1、如果是无符号数,不管是左移还是右移都是“逻辑移位” 。例,对无符号数 179 做左移、右移操作的结果,都是补0操作;
2、如果是有符号数,左移运算,那么做的是“逻辑移位”,与无符号数的左移同。如果是做右移运算,那么做的是“算术移位”。
最后本文给出十进制数转换为二进制的递归工作机制图例,如下
逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。
算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。
c++中,整数分有符号数和无符号数两种,对于这两种数做左移、右移运算,稍有区别:
1、如果是无符号数,不管是左移还是右移都是“逻辑移位” 。例,对无符号数 179 做左移、右移操作的结果,都是补0操作;
2、如果是有符号数,左移运算,那么做的是“逻辑移位”,与无符号数的左移同。如果是做右移运算,那么做的是“算术移位”。
最后本文给出十进制数转换为二进制的递归工作机制图例,如下
相关文章推荐
- 标准C++中的string类的用法总结
- crypto++ 中DES AES RC5 RC6 TEA XTEA XXTEA加密算法性能比较
- Effective C++ 条款24
- Date and Time in C++
- C++学习笔记2——引用
- c++中 dialog、bitmap等资源,由一个项目完全复制到另一个项目的方法
- 一点对C语言中跳过scanf语句的理解
- C++经典面试题(十)
- C语言实现封装
- C++学习笔记1——const
- 黑马程序员——C语言之格式化输出与字符串操作
- C++ string 与 int 等类型 的相互转换
- Sort()函数是c++一
- C语言按行读文件及字符串分割
- 第16章 C++标准模板库STL
- c++学习-字符串
- [C语言]进阶|指针与字符串
- c++中的静态成员
- C++数据访问声明的思考
- PY++ 自动将你的C++程序接口封装供python调用