一个例子理解C#位移
很多人提问,不知道C#位移,可能有些人在面试中也遇到过
其实很简单。。。
C#位移运算符:
左移:<<
右移:>>
位移理解可能简单一些:其实就是数据转换成二进制的左右移动;右移左补0,左移右补0,后面多出来的部分去掉。
用乘除法去理解位移也可以:
左位移:相当于乘
左移1位相当于乘2,左移2位相当于乘4,左移3位相当于乘8,左移4位相当于乘16...类推
右位移:相当于除
右移1位相当于除2,右移2位相当于除4,右移3位相当于除8,右移4位相当于除16...类推
下面用一个曾经回答一个网友的提问来理解一下位移的运算
题目:把89右位移一位:
string flag = Convert.ToString(89, 2); //这是把你的89转为2进制数。。
//flag结果:1011001
//你要右位移,左边补个0,后面多出来一位去掉
int j = Convert.ToInt32("0101100", 2); //再把2进制转化了10进制数。。
//结果:44
//位移就是这么简单
这样理解位移运算就很容易...
补充:
向右移位运算符在带符号整数类型的操作系统的不同而不同,在一些情况下,右位移左补0;其它情况下,右位移左补1
int i = -128; string flag = Convert.ToString(i, 2); i >>= 2; string flag2 = Convert.ToString(i, 2); //结果: //-128的二进制: 11111111111111111111111110000000 //-128右位移2位后的值: -32 //-128右位移2位后的二进制:11111111111111111111111111100000
作 者:
Porschev[钟慰]
出 处:
http://www.cnblogs.com/zhongweiv/
微 博:
http://weibo.com/porschev
欢迎任何形式的转载,但请务必注明原文详细链接