Java 中的三种位移运算符

java中有三种移位运算符

<<      :     左移运算符,num << 1,相当于num乘以2

>>      :     右移运算符,num >> 1,相当于num除以2

>>>    :     无符号右移,忽略符号位,空位都以0补齐

下面将使用代码进行测试:这里涉及到码的表示:原码、反码、补码、移码

原码:最高位表示符号位,剩余位表示数字,0表示正数,1表示负数

反码:正数的反码等于原码,负数符号为不变,剩余位取反

补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,去到反码然后加1
移码:补码符号位取反

例如:表示10的这个数字(8位)

原码:0000 1010

反码:0000 1010

补码:0000 1010

移码:1000 1010

例如:表示数字 -10

原码:1000 1010

反码:1111  0101

补码:1111  0110

移码:0111  0110

例如:

public class MainTest {

  //用于输出数字本身与其二进制数字
public static void printBinary(int num){
System.out.println(num);
System.out.println(Integer.toBinaryString(num));
} public static void main(String[] args){ int num = -;
//输出 num 的二进制位数
printBinary(num); //num 向右移动2位并输出
num =num >> ;
printBinary(num); //无符号右移
num =num>>>;
printBinary(num); }
}

其结构如下:

-

-

这个数据市为了更明显的现实位移设计的,-7774向右移动2位,相当于处于4

当-7774 无符号向右移动2位,首位补0,会改变原值,结果实际如下,0系统会不显示


但是,当 - 7774 改为 7774 结果如何???


最后无符号移动:负数与原值没有关系,正数符合除以 4 点特点

但是 发现右移运算符点结果:

负数:-1994

正数:1993

Java 中位移运算符 >>,>>>,<<的更多相关文章

  1. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  2. Java 中的运算符和流程控制

    Java 中的运算符和流程控制 + 面试题 算术运算符 Java 中的算术运算符,包括以下几种: **算术运算符** **名称** **举例** + 加法 1+2=3 - 减法 2-1=1 \* 乘法 ...

  3. Java中移位操作运算符的理解

    java中的移位运算符有三种: 1. <<: 左移 2. >>: 右移 3. >>>: 无符号右移 使用方法:左移就是将左边的操作数在内存中的二进制数据左移指 ...

  4. JAVA_SE基础——11.Java中的运算符

    在程序设计中,运算符应用得十分广泛,通过运算符可以将两个变量进行任意运算.数学中的"+"."-"."*"."/"运算符同 ...

  5. Java中位运算符的使用

    先预知识: 数据在计算机中是以二进制的形式进行存储的,而二进制在内存中是以补码的形式进行存储的.在介绍位运算之前,首先来看一下原码.反码和补码的概念.由于正数的原码.反码和补码的形式都是一样的,所以以 ...

  6. Java中的运算符及表达式

    常用的运算符:赋值运算符(=).加法运算符(+).乘法运算符(*).除法运算符(/).括号运算符(( )).余数运算符(%).布尔运算符. 注释符(//).注释的内容为双反斜杠后的内容至换行结束. j ...

  7. Java中逗号运算符的使用

    今天看到一道面试题,题目如下: 题目解释: 上面有一个类,有四个成员属性,以及两个构造方法(一个四个参数,一个两个参数),题目给出四个选项,问哪些选项可以满足在在四个参数的构造方法中完成x=a,y=b ...

  8. java 中的运算符

    Java的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符. 算数运算符():+ - * / % ++ -- 关系运算符():== != > >= < <= 逻 ...

  9. java 中的 & | ~ ^ 运算符分析

    1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段.public class data13{public static vo ...

随机推荐

  1. Objective-C中Block的常见用法

    typedef int(^AddValue)(int,int); int main(int argc, const char * argv[]) { @autoreleasepool { //1:NS ...

  2. C#用log4net记录日志

    1.首先安装 log4net. 2.新建 log4net.config 文件,右键-属性 “复制到输出目录”设置为“始终复制” 3.设置 log4net.config 配置文件 <?xml ve ...

  3. linux系统安全更新

    um --security upgrade 一.参考文档:  https://blog.csdn.net/ubuntu64fan/article/details/80927212 二.Linux主机定 ...

  4. python __class__属性

    >>> class a(object): pass >>> o=a() >>> dir(o) ['__class__', '__delattr__ ...

  5. docker之docker-machine用法

    转自:https://www.cnblogs.com/jsonhc/p/7784466.html docker-machine 是docker官方提供的docker管理工具.通过docker-mach ...

  6. Tomcat虚拟目录设置

    ssh $host "rm -fr /var/www/$tomcat_name/webapps/*" 远程分发war包部署tomcat项目时,需要先清除项目目录. -------- ...

  7. unity WegGL 调用js

    test.jslib文件,必须放到Assets/Plugins下,这里是:Assets/Plugins/WebGL mergeInto(LibraryManager.library, { Hello: ...

  8. linux 2.6.32文件系统的inode

    接上文: crash> struct -xo dentry.d_inode ffff8818118002c0 struct dentry { [ffff8818118002d0] struct ...

  9. Letter S Pronounced [z]

    Letter S Pronounced [z] Share Tweet Share Since English is not a phonetic language, one letter is no ...

  10. Haskell语言学习笔记(71)Semigroup

    Semigroup class Semigroup a where (<>) :: a -> a -> a sconcat :: NonEmpty a -> a stim ...