zoukankan      html  css  js  c++  java
  • java基础知识-原码、反码、补码、运算符

    一、原码、反码、补码

    原码

    一个数转化成二进制。

    用最高位来表示正负,最高位为0表示正数,最高位为1表示负数

    例如:

    short i=5;

    因为在java里short占2个字节转化成二进制就是 00000000 00000101 

    所以 00000000 00000101就是5的原码

    short i=-5;

    因为负数的最高位是1

    所以 10000000 000000101 就是-5的原码

     反码

    正数的反码不变,负数的反码就是在原码的基础上,符号位不变,其他位取反(0变1,1变0)。

     5的反码: 00000000 00000101

    -5的反码:11111111 11111010

    补码

    正数的补码还是不变,负数的补码就是在反码的基础上做+1运算

     5的补码:00000000 00000101

    -5的反码:11111111 11111011

     总结:正数的反码、补码都不变

        负数的反码、最高位不变其余为取反。

              负数的补码的反码的基础上加1

          

    0的原码和反码有两种形式但补码只有一只形式,0的原码有两种形式00000000 00000000 和10000000 00000000

                              对应的0的补码也有两种形式  00000000 00000000 和11111111 11111111

                                                   0的补码只有个一种              00000000 00000000

    为何要要使用原码、反码和补码?

     详细请看原码, 反码, 补码 详解

    二、运算符

    1、算数运算符

    +,-,*,/(正斜杠),%(取模)

    2、自加、自减运算符

    ++,--

    ++x 和 x++的区别?

    int i,a,b;
    a=5;
    b=5;
    i=++a;
    System.out.println("i="+i);//结果 i=6
    System.out.println("a="+a);//结果 a=6
    i=b++;    
    System.out.println("i="+i);//结果 i=5
    System.out.println("b="+b);//结果 b=6

    ++x先自己累加,在计算正个公式

    x++计算整个公式,再计算自己

    3、关系运算符

    >,>=,<,<=

    ==,!=

    注:一个等号叫做赋值,两个等号判断真或假

    关系运算符的结果只有两个要么true,要么false

    int a,b;
    a=5;
    b=5;
    boolean c;
    c=a==b;
    System.out.println(a<b);//结果:false
    System.out.println(c);//结果:true

    4、位运算符

     位运算符把数值转换成二进制进行计算

    例:int a=5;

      int b=9;

    因为它们是int型

     所以在内存中占4个字节,共32位 

    5二进制:    00000000 00000000 00000101

    9二进制:    00000000 00000000 00001001

    5和9上下同位各自进行计算     

    &(与)运算符

    上下只要有一位为0则结果为0

    上下都是1时结果才为1

    5&9 二进制结果:00000000 00000000 00000001 转成十进制结果:1

    |(或)运算符

    上下只要有一位为1则结果肯定为1

    上下都是0结果才为0

    5|9二进制结果:00000000 00000000 00001101 转成十进制结果:13

    ^ (异或)运算符

    上下全是0,或者全是1,总之上下数字相同的话该结果为0

    上下一个0一个1结果为 1

     5^9 二进制结果:00000000 00000000 00001100 转成二进制:12

    ~ (非)运算符

    ~运算符是对单个数字的二进制取反

    例如 ~9  二进制是:0110  转成二进制:

    5、位逻辑运算符

    && 与

    || 或

    ! 非

    6、位移运算符

    << 左移

    >> 右移

    7、赋值运算符

     操作符描述例子
    = 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
    + = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
    - = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C -
     A
    * = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
    / = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A等价于C = C / A
    (%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A
    << = 左移位赋值运算符 C << = 2等价于C = C << 2
    >> = 右移位赋值运算符 C >> = 2等价于C = C >> 2
    &= 按位与赋值运算符 C&= 2等价于C = C&2
    ^ = 按位异或赋值操作符 C ^ = 2等价于C = C ^ 2
    | = 按位或赋值操作符 C | = 2等价于C = C | 2

    8、三目运算符

    <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。

    例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);
    //结果为i = 8.因为5 > 3为true,所以i = 5 + 3.

    运算符的优先级

  • 相关阅读:
    Openstack Paste.ini 文件详解
    Keystone controller.py & routers.py代码解析
    YARN源码分析(三)-----ResourceManager HA之应用状态存储与恢复
    YARN源码分析(四)-----Journalnode
    YARN源码分析(四)-----Journalnode
    YARN源码分析(四)-----Journalnode
    YARN源码学习(五)-----NN,DN,RM在Ganglia上的监控实现机理
    Confluence 6 配置一个 Confluence 环境
    Confluence 6 审查日志的对象
    Confluence 6 审查日志
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/5574904.html
Copyright © 2011-2022 走看看