当前位置:  开发笔记 > 编程语言 > 正文

什么X >> = N呢?

如何解决《什么X>>=N呢?》经验,为你挑选了1个好方法。

我有这个代码:

tmp = (uint)len;
writer.CurPosition = value + 1;
do
{
    value++;
    writer.dest.WriteByte((byte)((tmp & 0x7F) | 0x80));
} while ((tmp >>= 7) != 0);

但我不明白是怎么tmp >>= 7运作的?



1> Ian..:

>>被称为右位移运算符.而且,由于存在和附加=>>(形成化合物分配运算符>>=),因此,分配指派器变量(tmp)将被共享.

或者换句话说,使用给定的例子,

tmp >>= 7; //actually you use tmp both to assign and to be assigned

相当于

tmp = tmp >> 7; //actually you use tmp both to assign and to be assigned

现在关于按位移位操作,我认为最好通过一个例子来说明它.

假设tmpis 的值0xFF00(1111 1111 0000 0000以二进制表示),那么如果我们在按位级别看到,则操作>>=将如下所示

1111 1111 0000 0000 //old tmp
------------------- >> 7
0000 0001 1111 1110 //Shifted by 7 -> this is going to be the new value for tmp

因此,新的价值tmp将是0x01FE(即0000 0001 1111 1110)

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有