几个移位的小例子
来源:互联网 发布:刚进入金融行业 知乎 编辑:程序博客网 时间:2024/05/01 17:00
<< 1 = * 2
<< 2 = * 4
<< 3 = * 8
<< 4 = * 16
...
>> 1 = / 2
>> 2 = / 4
>> 3 = / 8
>> 4 = / 16
...
失忆的猪猪(3224897) 17:04:54
移位运算符包括:
“>> 右移”;“<< 左移”;“>>> 无符号右移”
例子:
-5>>3=-1
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1111 1111
其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。
-5<<3=-40
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1101 1000
其结果与 -5*2*2*2 完全相同。
5>>3=0
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0000
其结果与 5/(2*2*2) 完全相同。
5<<3=40
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0010 1000
其结果与 5*2*2*2 完全相同。
-5>>>3=536870911
1111 1111 1111 1111 1111 1111 1111 1011
0001 1111 1111 1111 1111 1111 1111 1111
无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
一个有趣的现象是,把 1 左移 31 位再右移 31 位,其结果为 -1。
0000 0000 0000 0000 0000 0000 0000 0001
1000 0000 0000 0000 0000 0000 0000 0000
1111 1111 1111 1111 1111 1111 1111 1111
胡矿(45198841) 17:06:08
对于10进制的数字,左移一位就是在末尾加上一个0,数值变大10倍。
同理,对于二进制数字,左移一位是在末尾加上一个0,数值变大2被。
所以 x << 3,x就变大 2^3 倍,就是 8*x
右移同理
- 几个移位的小例子
- 几个Spring的小例子
- 几个典型的小例子
- javascript的几个小例子
- Runtime的几个小例子
- 几个简单的voip的小例子
- jfreechar关于坐标轴的几个小例子
- 几个文件操作的小例子
- Jquery GetJson的几个实用小例子
- 深入理解js的几个小例子
- shell的几个实际小例子
- 页面跳转的几个小例子
- 让人崩溃的几个小例子
- 几个小例子引发的思考
- c#几个小例子引发的思考
- 【C#】几个好玩的小例子
- Rxjava的几个操作符小例子
- C程序设计几个有意思的小例子
- Password / Word lists
- 硬盘零磁道损坏的修复方法
- N!最后一位非0位的求法
- 文字列转换成数字形式
- Spring学习笔记:spring集成hibernate
- 几个移位的小例子
- The C10K problem翻译
- windows 2003,windows 7,windows xp 混装方法
- Effective C++学习3 条款03:尽可能使用const
- 开通博客!
- [转贴]怎样让一个Service开机自动启动
- Struts与Spring集成方式
- 想问前辈一下问题
- 关于 webAppRootKey 发布工程时报错