`

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

    博客分类:
  • 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

 

 

 

分享到:
评论

相关推荐

    C语言运算符优先级和口诀

    c语言之运算符练习题 C语言运算符优先级和口诀 共有十五个优先级: 1 () [] . -&gt; 2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof ...移位五,关系六 // 移位运算符:&lt;&lt; &gt;&gt; ,关系:&gt; &lt; &gt;= &lt;= 等

    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 移位运算符是编程语言中用于处理二进制位的一种高效操作方式,它们能够对整数类型(byte, short, int, long)的值进行左移、右移和无符号右移操作。理解这些运算符对于优化代码和深入理解计算机底层工作原理至...

    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运算符优先级.doc

    5. 移位运算符:&lt;&lt;、&gt;&gt;、&gt;&gt;&gt; 6. 比较运算符:==、!=、&lt;、&gt;、&lt;=、&gt;= 7. 逻辑运算符:&&、|| 8. 赋值运算符:=、+=、-=、\*=、/=、%=、&lt;&lt;=、&gt;&gt;=、&=、^=、|=、&gt;&gt; 二、Java 异常处理 Java 中的异常处理机制可以帮助...

    汇编语言教程

    &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 连接运算符...

    <<数字电路入门>>

    继组合逻辑后,书中的重点会转向时序逻辑电路,如寄存器、计数器和移位寄存器。时序逻辑电路具有记忆功能,能够存储和处理序列信息,是构建各种数字系统(如计算机内存和计时器)的核心。这部分内容会涉及到状态机的...

    按位操作.docx

    移位运算符是按位运算符的一种,包括左移位运算符(&lt;&lt;)和右移位运算符(&gt;&gt;). 左移位运算符将数值的位向左移动指定的位数,相当于乘以2的相应次方;右移位运算符则将数值的位向右移动,相当于除以2的相应次方。需要注意...

    Java中常见的几种运算符.doc

    移位运算符是指用于执行移位运算的符号,例如 &lt;&lt;、&gt;&gt;、&gt;&gt;&gt; 等。这些符号可以用来将数字向左或向右移动指定的位数。 例如:int a = 10; int b = a &lt;&lt; 2; // b 的值将是 40 六、三元运算符 三元运算符是指用于执行...

    C语言运算符优先级

    =)、位运算符(按位与&、按位异或^、按位或|)、逻辑运算符(逻辑与&&、逻辑或||)和移位运算符(左移&lt;&lt;、右移&gt;&gt;)。 三目运算符又称为条件运算符,形式为表达式1 ? 表达式2 : 表达式3。其执行过程是先计算表达式1...

    Java移位运算符详解实例(小结)

    移位运算符主要包括左移位运算符(&lt;&lt;)、右移位运算符(&gt;&gt;&gt;)和带符号的右移位运算符(&gt;&gt;)。这些运算符可以单独用来处理int型整数。 1. 左移位运算符(&lt;&lt;) 左移位运算符用“&lt;&lt;”表示,是将运算符左边的对象向左...

    c语言操作符的优先级排列及其说明[归类].pdf

    移位运算符包括&lt;&lt; &gt;&gt; 等,它们的优先级比算术运算符低。移位运算符都是从左至右结合的。 关系运算符 --------- 关系运算符包括 &lt; &lt;= &gt; &gt;= 等,它们的优先级比移位运算符低。关系运算符都是从左至右结合的。 逻辑...

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

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

    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 商人过河...

    Java移位运算符1

    本文将深入探讨Java中的三种移位运算符:左移运算符(&lt;&lt;),右移运算符(&gt;&gt;)以及无符号右移运算符(&gt;&gt;&gt;)。 1. 左移运算符(&lt;&lt;) 左移运算符(&lt;&lt;)将一个数的二进制表示向左移动指定的位数。例如,如果`num`是一个...

    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 ...

Global site tag (gtag.js) - Google Analytics