c++中的左移、右移运算

原创 2011年05月23日 18:58:00

  移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。

逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。

算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。

 

  c++中,整数分有符号数和无符号数两种,对于这两种数做左移、右移运算,稍有区别:

1、如果是无符号数,不管是左移还是右移都是“逻辑移位” 

例如,分别对无符号数 179 做左移、右移操作的结果,

 

  

                                                                                  图1 逻辑左移

 

 

 图2 逻辑右移

 

 

2、如果是有符号数,

2a,如果是做左移运算,那么做的是“逻辑移位”,同 1中无符号数的左移。

2b,如果是做右移运算,那么做的是“算术移位”。

 

例如:

  

图3 负数的右移

 

图4 正数的右移

 

    对于当前的大多数c/c++编译器来说,都是按照上面所讲实现的。

C语言之左移和右移运算符

左移运算符() 左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。 右移运算符(>>) 右移...
  • hanwang3
  • hanwang3
  • 2015年09月13日 00:58
  • 6172

C语言里的左移和右移运算

先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用 int i = 1; i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位...
  • u010843358
  • u010843358
  • 2014年06月18日 10:15
  • 6415

java中右移运算符>>和无符号右移运算符>>>的区别

在做一个pcm音频时遇到了这个符,但是我看有些百度的地方的解释都不能令我很懂,所以就整理下。 首先左移和右移的区别是很好区分的 左移 :就是该数对应二进制码整体左移,左边超出的部分舍弃,右边补零。...
  • cobbwho
  • cobbwho
  • 2017年02月07日 11:07
  • 3551

位运算——左移右移运算详解

代码 #include "stdio.h" char leftshift(char i, int n) { if(n < 0) return -1; return ...
  • u010399331
  • u010399331
  • 2014年04月20日 15:20
  • 5468

java高级之java的左移运算符和右移运算符

用移位操作可以极大地提高性能,因为在计算机底层,对位的操作是最方便、最快的。移位操作虽然快,但是可能会使代码不太好理解,因此最好加上相应的注释。...
  • onezg
  • onezg
  • 2016年11月09日 23:07
  • 1114

C++中左移<<和右移>>的使用

在C++中,经常会看到别人有int ans=1 1 #include 2 using namespace std; 3 int main() 4 { 5 int a = 1 4; 6 ...
  • jzwong
  • jzwong
  • 2015年04月13日 10:40
  • 7602

C++中左移右总结

移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。 逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。 算术移位:移出...
  • wang_jing_2008
  • wang_jing_2008
  • 2012年09月11日 15:46
  • 2352

c++中的左移、右移运算

转自:http://blog.csdn.net/hengshan/article/details/6440549 今天在看X264的源代码时,发现里面大量应用了">>"运算符,看书的时候注意...
  • jubincn
  • jubincn
  • 2011年11月18日 14:53
  • 9401

C/C++位运算技巧

预备知识 对于位运算,大家都很熟悉,基本的位操作有与、或、非、异或等等。在面试中经常会出现位运算相关的题,所以我就做了简单的整理,参考了很多写的很好的博客及书籍。 现在简单说一下,移位运算。 左...
  • zouliping123
  • zouliping123
  • 2013年06月01日 14:40
  • 16990

C++移位运算符

关于逻辑移位、算术移位可参见迅雷深大笔试题部分。的一道题。 以前看到C++标准上说,移位运算符(>)出界时的行为并不确定: The behavior is undefined if the rig...
  • hgl868
  • hgl868
  • 2011年12月10日 07:43
  • 33933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++中的左移、右移运算
举报原因:
原因补充:

(最多只允许输入30个字)