【美高梅开户网址】按位取反运算符的施用,JAVA基础知识点

按位取反运算符是依据二进制的每一位取反,举个例子byte类型,~0的结果正是255。

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

按位取反运算符是根据贰进制的种种人取反,比方byte类型,~0的结果就是255。

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

 

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

打字与印刷结果是 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;
    }
}

 

美高梅开户网址 1

按位取反运算符是遵守2进制的每壹人取反,举个例子byte类型,~0的结果就是25五。
该意义能够在mask中做一些五花大绑操…

按位取反运算符是依照二进制的每一位取反,比方byte类型,~0的结果正是25五。

  • 运算符
    • 赋值运算符
    • 算术运算符
    • 【美高梅开户网址】按位取反运算符的施用,JAVA基础知识点。相比较运算符

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

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

运算符

 

 

赋值运算符 “=”

最广泛的操作符之1是差不多赋值操作符“ =”,它将左侧的值赋给左边的操作数:

int a =10

如下代码,a存放了贰,肆,八多个值。用按位取反’~’运算符反转

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

算术运算符

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

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

简言之的算术运算福(二元)

Java编制程序语言提供了推行加,减,乘,除的运算符。唯一只怕看起来很新的符号是“
%”,它将八个操作数除以另一个操作数,并将余数作为结果重临。

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元运算符只需求2个操作数;
它们施行各类操作,举例将值递增/递减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。
  • | 或

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

    • 原理: 只要两边的布尔表明式
      结果不雷同,那么结果就为true,假诺左右两边
      的布尔表达式壹致,那么就为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. 换成五个变量的值,不准出现第一方变量。

    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. 抽出2个二进制数据的钦点位数。供给读取该二进制数据的低4个人

        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 
    
  • >>>(无符号右移) :

    • 无符号右移与右移的区分:进行右移运算的时候,假若操作数是1个正数,那么左边的空缺位使用0补,
    • 只要操作数是一个负数,那么左侧的空缺位使用一补。而利用无符号右移的时候,不管是正数依然负数都合并使用0补。

笔试标题:使用最高的成效算出贰倍增八的结果。

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

美高梅开户网址 2

美高梅开户网址 3

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

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

美高梅开户网址 ,元日运算符要注意的细节:
行使安慕希运算符的时候,一定要使用该表明式重回的结果,只怕是概念二个变量接收该表明式重临的结果。

发表评论

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

网站地图xml地图