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

按位取反运算符是规行矩步二进制的各种人取反,例如byte类型,~0的结果正是25伍。

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

按位取反运算符的采取,JAVA基础知识点。按位取反运算符是比照二进制的每一位取反,比如byte类型,~0的结果正是255。

该意义可以在mask中做一些五花大绑操作

 

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

打字与印刷结果是 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的结果正是255。
该功用能够在mask中做一些反转操…

按位取反运算符是比照2进制的每一人取反,举个例子byte类型,~0的结果便是25五。

  • 运算符
    • 赋值运算符
    • 算术运算符
    • 比较运算符

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

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

运算符

 

 

赋值运算符 “=”

最广大的操作符之一是归纳赋值操作符“ =”,它将左边的值赋给左边的操作数:

int a =10

一般来讲代码,a存放了2,4,八多个值。用按位取反’~’运算符反转

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

算术运算符

亚洲必赢官网 ,打字与印刷结果是 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元运算符

一元运算符只需求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.
  • && 短路与;双与

    • 堵塞与和单与符号的同1与区别点:
      • 同样点: 短路与和单与运算 的结果是同等的。
      • 差别点:
        使用短路与的时候,假设左边的布尔表明式为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;
    }
}

位运算符:位运算符正是直接操作二进制位的。

  • & (与)
  • | (或)
  • ^ (异或)
  • 原理: 若是操作数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;
负数的表现格局便是呼应的正数取反,再加壹。负数的万丈位明确是一。
负数对应的正数的2进制-壹,然后取反。

位运算符或者会冒出的笔试标题:

  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. 收取五个贰进制数据的钦命位数。供给读取该贰进制数据的低几个人

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

 

 

移动运算符:

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

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

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

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

笔试标题:使用最高的频率算出二倍增捌的结果。

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

亚洲必赢官网 2

亚洲必赢官网 3

新岁初中一年级运算符(三目运算符)

格式: 布尔表明式?值一:值贰 ;

安慕希运算符要注意的底细:
运用长富运算符的时候,一定要运用该表达式再次来到的结果,只怕是概念二个变量接收该表明式再次来到的结果。

网站地图xml地图