位运算(右移) <<的疑问

2019-01-03 03:34发布

/*
对一个二进制位移,一般什么场景让位移功能存在?
右移有正负数字判断,对二进制数还有正负? 难道-0010?

给个右移的直观教程,动画is wonderful...

谢了。
*/

2条回答
Deceive 欺骗
2楼-- · 2019-01-03 04:19
forever°为你锁心
3楼-- · 2019-01-03 04:19

比如 int 转 byte之类的。

当然也可以直接运算,比如对于整形来说左移1大约就是*2,右移1大约就是/2。

例如参见BinaryWriter(下面的函数是扩展了,去掉Big就是原有的,它里面的实现就有移位):

protected override void OnWriteToBuffer(BinaryWriter writer)
{
writer.WriterBig(Length);
writer.WriterBig(Number);
writer.WriterBig((ushort)Catelog);
writer.WriterBig(SessionId);
writer.WriterBig(Version.Buffer);
writer.WriterBig((byte)EncryptOpition);
writer.WriterBig(KeyForCommonEncript);
}

查看更多
登录 后发表回答