`

移位运算符“<<”、“>>”和“>>>”的诠释

    博客分类:
  • Java
 
阅读更多

 

移位运算符就是在二进制的基础上对数字进行平移。(只是二进制)

按照平移的方向和填充数字的规则分为三种:

<<(左移)、>>(带符号右移)和>>>(无符号右移)。
  在移位运算时,byteshortchar类型移位后的结果会变成int类型,对于byteshortcharint进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。


  三种移位运算符的移动规则和使用如下所示:
  “<<”运算规则:

      按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
  语法格式:
  需要移位的数字 << 移位的次数
  例如: 3 << 2,则是将数字3左移2
  计算过程:
  3 << 2
  首先把3转换为二进制数字

0000 0000 0000 0000 0000 0000 0000 0011

然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是

0000 0000 0000 0000 0000 0000 0000 1100

则转换为十进制是12.


  “>>”运算规则:

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),

高位的空位补符号位,即正数补零,负数补1.
  语法格式:
  需要移位的数字 >> 移位的次数
  例如11 >> 2,则是将数字11右移2
  计算过程:

11的二进制形式为:

0000 0000 0000 0000 0000 0000 0000 1011

然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终

结果是:

0000 0000 0000 0000 0000 0000 0000 0010.

转换为十进制是2.


  “>>>”运算规则:

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。

       无论正数还是负数都在高位插入0

 

 

 

分享到:
评论

相关推荐

    Thinking in java(中文)

    控制程序流程&lt;br&gt;3.1 使用Java运算符&lt;br&gt;3.1.1 优先级&lt;br&gt;3.1.2 赋值&lt;br&gt;3.1.3 算术运算符&lt;br&gt;3.1.4 自动递增和递减&lt;br&gt;3.1.5 关系运算符&lt;br&gt;3.1.6 逻辑运算符&lt;br&gt;3.1.7 按位运算符&lt;br&gt;3.1.8 移位运算符&lt;br&gt;3.1.9 ...

    java 移位运算符的资源

    java 移位运算符 java 移位运算符 java 移位运算符

    C#编程经验技巧宝典

    27&lt;br&gt;&lt;br&gt;0056 强行改变运算符的运算顺序 27&lt;br&gt;&lt;br&gt;第3章 程序算法 29&lt;br&gt;&lt;br&gt;3.1 数据结构 30&lt;br&gt;&lt;br&gt;0057 如何实现单向链表 30&lt;br&gt;&lt;br&gt;0058 如何实现双向链表 35&lt;br&gt;&lt;br&gt;0059 如何实现堆栈 41&lt;br&gt;...

    Java移位运算符1

    java中有三种移位运算符&lt;&lt; : 左移运算符,num &lt;&lt; 1,相当于num乘以2&gt;&gt; : 右移运算符,num &gt;&gt; 1,

    汇编语言教程

    &lt;br&gt; 8.4 习题 &lt;br&gt;第9章 宏&lt;br&gt; 9.1 宏的定义和引用 &lt;br&gt; 1 宏的定义&lt;br&gt; 2 宏的引用&lt;br&gt; 3 宏的参数传递方式&lt;br&gt; 4 宏的嵌套定义&lt;br&gt; 5 宏与子程序的区别 &lt;br&gt; 9.2 宏参数的特殊运算符 &lt;br&gt; 1 连接运算符...

    汇编语言经典电子书

    &lt;br&gt; 8.4 习题 &lt;br&gt;第9章 宏&lt;br&gt; 9.1 宏的定义和引用 &lt;br&gt; 1 宏的定义&lt;br&gt; 2 宏的引用&lt;br&gt; 3 宏的参数传递方式&lt;br&gt; 4 宏的嵌套定义&lt;br&gt; 5 宏与子程序的区别 &lt;br&gt; 9.2 宏参数的特殊运算符 &lt;br&gt; 1 连接运算符...

    汇编语言程序设计教程

    宏&lt;br&gt; 9.1 宏的定义和引用 &lt;br&gt; 1 宏的定义&lt;br&gt; 2 宏的引用&lt;br&gt; 3 宏的参数传递方式&lt;br&gt; 4 宏的嵌套定义&lt;br&gt; 5 宏与子程序的区别 &lt;br&gt; 9.2 宏参数的特殊运算符 &lt;br&gt; 1 连接运算符&lt;br&gt; 2 字符串整体传递...

    汇编语言 详细 电子书

    &lt;br&gt; 8.4 习题 &lt;br&gt;第9章 宏&lt;br&gt; 9.1 宏的定义和引用 &lt;br&gt; 1 宏的定义&lt;br&gt; 2 宏的引用&lt;br&gt; 3 宏的参数传递方式&lt;br&gt; 4 宏的嵌套定义&lt;br&gt; 5 宏与子程序的区别 &lt;br&gt; 9.2 宏参数的特殊运算符 &lt;br&gt; 1 连接运算符...

    GUI巧用移位运算符获取汉字编码值(C#).rar

    一个使用C#实现的小案例,通过使用移位运算符来获取汉字的GB2312编码值(附blog原文:https://blog.csdn.net/qq_38768365/article/details/99410757)

    C语言符号优先级,提供参考

    //移位运算符:&lt;&lt; &gt;&gt; ,关系:&gt; &lt; &gt;= &lt;= 等 等于(与)不等排第七; //即== != 位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|) "三分天下"八九十; 逻辑或跟与; //逻辑运算符:|| 和 && 十二和十一; //注意...

    c源代码经典案例集(有小游戏)

    &lt;br&gt;199 方差运算 &lt;br&gt;200 级数运算 &lt;br&gt;201 输出素数 &lt;br&gt;202 素数题 &lt;br&gt;203 序列排序 &lt;br&gt;204 整数各位数字排序 &lt;br&gt;205 字符串字母移位 &lt;br&gt;206 Fibonacc数列 &lt;br&gt; &lt;br&gt;第七部分 游戏篇&lt;br&gt; &lt;br&gt;207 商人过河...

    C源代码实例集

    &lt;br&gt;170 水果拼盘 &lt;br&gt;171 小孩吃梨 &lt;br&gt;172 删除字符串中的特定字符 &lt;br&gt;...移位 &lt;br&gt;190 统计最高成绩 &lt;br&gt;191 比较字符串长度 &lt;br&gt;192 合并整数 &lt;br&gt;193 矩阵逆置&lt;br&gt;194 删除指定的字符&lt;br&gt;195 括号匹配 &lt;br&gt;196 ...

    ARM 指令集(英蓓特中文版chm格式)

    &lt;br&gt;算术和逻辑指令 &lt;br&gt;移位操作 &lt;br&gt;乘法指令 &lt;br&gt;比较指令 &lt;br&gt;分支指令 &lt;br&gt;条件执行 &lt;br&gt;软件中断指令 &lt;br&gt;APCS (ARM 过程调用标准) &lt;br&gt;编写安全的 32-bit 代码的基本规则 &lt;br&gt;IEEE 浮点指令 &lt;br&gt;汇编器伪指令...

    Java中的进制与移位运算符

    Java中的进制与移位运算符 Java中的进制与移位运算符

    SOPC系统设计入门教程

    Master)总线结构和DMA&lt;br&gt;4.5.5 数据和指令高速缓冲器&lt;br&gt;4.5.6 外设和存储器接口&lt;br&gt;4.6 Nios SDK&lt;br&gt;4.6.1 inc目录&lt;br&gt;4.6.2 lib目录&lt;br&gt;4.6.3 src目录&lt;br&gt;4.7 软件开发应用&lt;br&gt;4.7.1 开始前的准备...

    C/C++面试题目及解答.doc

    //移位&lt;br&gt; val &= 0x01; //与1相与&lt;br&gt; if(val) &lt;br&gt; num++; &lt;br&gt; } &lt;br&gt; return num; &lt;br&gt; } &lt;br&gt;第二种unsigned int TestAsOne1(char log) &lt;br&gt; { &lt;br&gt; int i; &lt;br&gt; unsigned int num=0, val; &lt;br&gt; for(i=0; i&lt;8...

    移位运算符

    移位运算符

    深入理解C++移位运算符

    下面小编就为大家带来一篇深入理解C++移位运算符。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)

    Erlang的比较运算符 opDescription==等于/=不等于=&lt;小于等于&lt;小于&gt;=大于等于&gt;大于=:=精确的等于=/=精确的不... false 所以一般推荐用精确等于去比较 比较运算符的大小级别: number &lt; atom&gt; 1 &gt; a. false opDe

    Proteus8 LED应用实例分析

    移位:移位运算符有双目移位运算符:&lt;&lt;(左移)和 &gt;&gt;(右移)。 左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数...

Global site tag (gtag.js) - Google Analytics