首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个例子理解C#位移

一个例子理解C#位移

作者头像
Porschev
发布2018-01-16 11:36:57
1K0
发布2018-01-16 11:36:57
举报

很多人提问,不知道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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-11-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档