JAVA基础知识点,按位取反运算符的应用

By admin in 4858.com on 2019年4月8日

按位取反运算符是比照2进制的每一个人取反,比如byte类型,~0的结果就是255。

C#’~’按位取反运算符的应用,

按位取反运算符是遵从2进制的每一人取反,比如byte类型,~0的结果正是25五。

该效能能够在mask中做1些反转操作

 

如下代码,a存放了二,4,八两个值。用按位取反’4858.com ,~’运算符反转

打字与印刷结果是 false,flase,false,true,true。Mask已经被反转

class Program
{
    static void Main(string[] args)
    {
        byte a = 2 | 4 | 8;
        byte b = (byte)~a;

        Console.WriteLine((b & 2) == 2);
        Console.WriteLine((b & 4) == 4);
        Console.WriteLine((b & 8) == 8);

        Console.WriteLine((b & 16) == 16);
        Console.WriteLine((b & 32) == 32);

        Console.Read();
    }
}

 

譬如在unity引擎中,该操作能够被利用在LayerMask上:

public class LayerMaskTest : MonoBehaviour
{
    public LayerMask layerMask;


    void OnEnable()
    {
        layerMask.value = ~layerMask.value;
    }
}

 

4858.com 1

按位取反运算符是按部就班2进制的每种人取反,比如byte类型,~0的结果就是25五。
该意义可以在mask中做1些反转操…

按位取反运算符是依据二进制的每一位取反,比如byte类型,~0的结果就是25伍。

  • 运算符
    • 赋值运算符
    • JAVA基础知识点,按位取反运算符的应用。算术运算符
    • 正如运算符

该功效能够在mask中做1些反转操作

该意义能够在mask中做1些五花大绑操作

运算符

 

 

赋值运算符 “=”

最普遍的操作符之一是简简单单赋值操作符“ =”,它将左侧的值赋给左侧的操作数:

int a =10

正如代码,a存放了二,四,八五个值。用按位取反’~’运算符反转

一般来说代码,a存放了贰,四,捌多个值。用按位取反’~’运算符反转

算术运算符

打字与印刷结果是 false,flase,false,true,true。Mask已经被反转

打字与印刷结果是 false,flase,false,true,true。Mask已经被反转

不难易行的算术运算福(二元)

Java编制程序语言提供了执行加,减,乘,除的运算符。唯1恐怕看起来很新的标记是“
%”,它将1个操作数除以另3个操作数,并将余数作为结果重回。

Operator Description
+ Additive operator (also used for String concatenation)
Subtraction operator
* Multiplication operator
/ Division operator
% Remainder operator
class ArithmeticDemo {

    public static void main (String[] args) {

        int result = 1 + 2;
        // result is now 3
        System.out.println("1 + 2 = " + result);
        int original_result = result;

        result = result - 1;
        // result is now 2
        System.out.println(original_result + " - 1 = " + result);
        original_result = result;

        result = result * 2;
        // result is now 4
        System.out.println(original_result + " * 2 = " + result);
        original_result = result;

        result = result / 2;
        // result is now 2
        System.out.println(original_result + " / 2 = " + result);
        original_result = result;

        result = result + 8;
        // result is now 10
        System.out.println(original_result + " + 8 = " + result);
        original_result = result;

        result = result % 7;
        // result is now 3
        System.out.println(original_result + " % 7 = " + result);

        // 在java中做取模 运算的时,结果的正负号是取决于被除数。
        System.out.println("结果:"+(10%3));  // 1
        System.out.println("结果:"+(10%-3)); // 1     
        System.out.println("结果:"+(-10%3)); // -1   
        System.out.println("结果:"+(-10%-3)); //  -1 
    }
}
class Program
{
    static void Main(string[] args)
    {
        byte a = 2 | 4 | 8;
        byte b = (byte)~a;

        Console.WriteLine((b & 2) == 2);
        Console.WriteLine((b & 4) == 4);
        Console.WriteLine((b & 8) == 8);

        Console.WriteLine((b & 16) == 16);
        Console.WriteLine((b & 32) == 32);

        Console.Read();
    }
}
class Program
{
    static void Main(string[] args)
    {
        byte a = 2 | 4 | 8;
        byte b = (byte)~a;

        Console.WriteLine((b & 2) == 2);
        Console.WriteLine((b & 4) == 4);
        Console.WriteLine((b & 8) == 8);

        Console.WriteLine((b & 16) == 16);
        Console.WriteLine((b & 32) == 32);

        Console.Read();
    }
}

1元运算符

一元运算符只需求1个操作数;
它们执行各类操作,例如将值递增/递减一,否定表明式或反转布尔值。

Operator Description
+ Unary plus operator; indicates positive value (numbers are positive without this, however)
Unary minus operator; negates an expression
++ Increment operator; increments a value by 1
Decrement operator; decrements a value by 1
! Logical complement operator; inverts the value of a boolean
class UnaryDemo {

    public static void main(String[] args) {

        int result = +1;
        // result is now 1
        System.out.println(result);

        result--;
        // result is now 0
        System.out.println(result);

        result++;
        // result is now 1
        System.out.println(result);

        result = -result;
        // result is now -1
        System.out.println(result);

        boolean success = false;
        // false
        System.out.println(success);
        // true
        System.out.println(!success);
    }
}

自增自减运算符:如若只是履行简单的星罗棋布/递减操作,则选拔哪位版本并不主要。可是一旦在越来越大的表明式中应用那么些运算符,那么您挑选的运算符只怕会有非常大的分化。

    public static void main(String[] args) {
        int i = 0;
        int i2;
        i2 = i++; // int temp = i; i2 = i;  i=temp+1;
        System.out.println(i2);  // i2 = 0;i = 1
        i2 = ++i;  // int temp = i; i=temp+1; i2 = i;
        System.out.println(i2);  // i2 = 2; i = 2
    }

class PrePostDemo {
    public static void main(String[] args){
        int i = 3;
        i++;
        // prints 4
        System.out.println(i);
        ++i;               
        // prints 5
        System.out.println(i);
        // prints 5
        System.out.println(i++);  //后自增,先使用数据,再进行自增;System.out.println(i++)相当于System.out.println(i);i+1;
        // prints 7
        System.out.println(++i);//前自增,先进行自增,再使用数据;System.out.println(++i)相当于i+1;System.out.println(i);
        // prints 7
        System.out.println(i);
    }
}

 

 

正如运算符

Operator Description
== equal to
!= not equal to
> greater than
>= greater than or equal to
< less than
<= less than or equal to
class ComparisonDemo {

    public static void main(String[] args){
        int value1 = 1;
        int value2 = 2;
        if(value1 == value2)
            System.out.println("value1 == value2");
        if(value1 != value2)
            System.out.println("value1 != value2");
        if(value1 > value2)
            System.out.println("value1 > value2");
        if(value1 < value2)
            System.out.println("value1 < value2");
        if(value1 <= value2)
            System.out.println("value1 <= value2");
    }
}

譬如说在unity引擎中,该操作能够被选拔在LayerMask上:

譬如在unity引擎中,该操作能够被采取在LayerMask上:

逻辑运算符

逻辑运算符 :逻辑运算符的功力是用来连接布尔表明式的。

Operator Description
&
|
^ 异或
&& 双与;短路与
|| 双或;短路或
  • & 与

    • 原理: 唯有左右变量同时
      为true,那么结果才是true,不然就为false。
  • | 或

    • 规律:
      只要两边的布尔表明式有壹边为true,那么结果就为true,唯有两边同时为false
      的时候,结果才是false.
  • ^ 异或

    • 规律: 只要两边的布尔表明式
      结果分化等,那么结果就为true,假设左右两边
      的布尔表明式1致,那么就为false.
  • && 短路与;双与

    • 闭塞与和单与符号的同样与分化点:
      • 相同点: 短路与和单与运算 的结果是壹律的。
      • 差异点:
        使用短路与的时候,假若左边的布尔表明式为false,则不会在运算左侧的布尔表明式,从而增强了
        频率。使用单与的时候,即使发现左侧的布尔表明式为false,还是会运算左侧的布尔表明式的。
    • 唯有左边的布尔表明式为false时,双与的作用才要压倒单与的.

  • || 短路或;双或
    • 堵塞或与单或的相同点与不一致点:
      • 相同点:运算的结果是一致 的。
      • 分歧点:使用短路或的时候,当发现右边的布尔表明式为true时,则不会运算左侧的布尔表明式。
    • 运用单或的时候
      发现左边的布尔表明式为true,依然会运算左侧布尔表明式。
public class LayerMaskTest : MonoBehaviour
{
    public LayerMask layerMask;


    void OnEnable()
    {
        layerMask.value = ~layerMask.value;
    }
}
public class LayerMaskTest : MonoBehaviour
{
    public LayerMask layerMask;


    void OnEnable()
    {
        layerMask.value = ~layerMask.value;
    }
}

位运算符:位运算符便是直接操作2进制位的。

  • & (与)
  • | (或)
  • ^ (异或)
  • 原理: 假设操作数A一连异或同多少个操作数三遍,那么结果只怕操作数A。

public static void main(String[] args) {
    System.out.println(6&3); // 2 
    System.out.println(6|3); // 7
    System.out.println(6^3); //  5
    System.out.println(6^3^3); // 6
    System.out.println(~7);  // -8
}

动用: 对数据加密.
~ (取反)
当加入取反的数值是正数时,把相应的值加上负号,再-一;
当出席取反的数值是负数时,把相应的值加上负号,再-一;
负数的表现情势正是呼应的正数取反,再加1。负数的参天位肯定是1。
负数对应的正数的二进制-一,然后取反。

位运算符大概会油可是生的笔试标题:

  1. 沟通四个变量的值,不准出现第一方变量。

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a = a ^ b;
//        System.out.println(a); 30
        b = a ^ b;
        a = a ^ b;
        System.out.println(a);
        System.out.println(b);
    }
  1. 取出1个贰进制数据的钦命位数。供给读取该贰进制数据的低几个人

        00000000-00000000-00010100-01001101
    &   00000000-00000000-00000000-00001111
        ------------------------------------------
        00000000-00000000-00000000-00001101 

 

 

挪动运算符:

  • << (左移)
    原理:贰个操作数进行左移运算的时候,结果就是等于操作数乘以二的n次方,n正是左移
    的位数.

    3<<1 = 3 *2(1) = 6;
    3<<2 = 3*2(2) = 12
    3<<3 = 3*2(3) = 24
    
  • >>(右移)
    规律:二个操作数在做右移运算的时候,实际上正是也就是该操作数除以2的n次方,n就是右移的位数。

    3>>1 = 3 / 2(1) = 1
    3>>2 = 3 / 2(2) = 0 
    
  • >>>(无符号右移) :

    • 无符号右移与右移的区别:进行右移运算的时候,尽管操作数是三个正数,那么左侧的空缺位使用0补,
    • 要是操作数是1个负数,那么左侧的空缺位使用一补。而选取无符号右移的时候,不管是正数还是负数都合并使用0补。

笔试标题:使用最高的效能算出二加倍8的结果。

  2<<3 = 2*2(3) = 16;

4858.com 2

4858.com 3

三元运算符(3目运算符)

格式: 布尔表明式?值壹:值二 ;

元春运算符要注意的细节:
应用长富运算符的时候,一定要选拔该表明式重返的结果,大概是概念叁个变量接收该表明式再次来到的结果。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有