zoukankan      html  css  js  c++  java
  • Java----逻辑运算符,位运算符

       逻辑运算符:

               &&(且或者与):逻辑与运算:两个变量都为真,结果就为真,也就是true,反之,只要有一个为假那么结果就是假,也就是false

               ||(或):两个变量只要有一个为真,那么结果就是真,也就是true

                !(非):逻辑非运算:如果为真则非真为假,如果为家则非假为真。

     接下我们测试一下逻辑运算符:

    import java.util.Arrays;
    
    public class MyJava {
    
    
    
        public static  void main(String[] args) {
          boolean a=true;
          boolean b=false;
    
            System.out.println("a&&b="+(a&&b)); //逻辑与运算:两个变量都为真,结果就为真,也就是true,反之,只要有一个为假那么结果就是假,也就是false
            System.out.println("a||b="+(a||b)); //逻辑或运算:两个变量只要有一个为真,那么结果就是真,也就是true
            System.out.println("!a&&b="+(!a&&b));//逻辑非运算:如果为真则非真为假,如果为家则非假为真。
        }
    
    
    }

    上面也就是逻辑运算的基本用法了!

    接下来我们要讲一下位运算了,这个有点难理解了。

      位运算符:&(与),|(或),^(非),~(取反),>>(右移),<<(左移),>>>(只要了解就行)

     我们知道位一般都是二进制数字:例如

    数字0表示  :  0000 0000  

    数字1表示:0000 0001

    数字2表示: 0000 0010

    数字3表示: 0000 0011  .......

    数字8表示: 0000 1000

    那么他们到底是如何换算的呢:举个例子

    上面8表示的位是:0000 1000   为什么等于8      因为这个位数是二进制的   所以 8= 0^(8-1)+0^(7-1)+0^(6-1)+0^(5-1)+2^(4-1)+0^(3-1)+0^(2-1)+0^(1-1)=8

    看上去好像还是糊里糊吧!我做个图大家估计都明白怎末回事了:

     注意出现1和0 ,我查了一下到底什么意思,大概意思就是 1表示开,0表示关,也就是所谓的真或者假,true或者false 

    出现true表示1 ,因为位是二进制 所以换算成十进制为:2^(4-1)=2^3=8 如果是0的话表示false,所以就是0的多少次方。

    通过上面的解释应该都知道十进制数和二进制数的转换了吧

      接下来我们定义:

     A=  0000 1100   

     B=  1100 0101

    A&B=0000 0100

     同理:

    ~B=0011 1010 (对B进行取反  也就是原来0变成1,原来1变成0)

    下面又一个问题来了:

      2*4=8 如何运算最快?

       8是不是等于 2*2*2 ,大学的时候相信都学过一门课叫做计算机组成原理,都上过实验课吧! 无非就是遇到1灯亮,0灯灭吗。哈哈哈 ! 我们现在学的语言都是从底层一点一点封装起来的,我们从底层实现显然是最快的了。

       想一下如果我将2向做移动2为会得到上面结果?

    那么我们就通过代码测试一下:

    import java.util.Arrays;
    
    public class MyJava {
    
    
    
        public static  void main(String[] args) {
            System.out.println(2<<2);//左移
            System.out.println(2>>1);//右移
        }
    
    }

    测试的结果是2左移2位是8,右移1位是1.

    那到底是怎末做的呢?

       首先 我们知道   2的位数是     0000 0010      向左移动2位是:0000 1000     二进制转换成十进制是: 0^(8-1)+0^(7-1)+0^(6-1)+0^(5-1)+2^(4-1)+0^(3-1)+0^(2-1)+0^(1-1)=8

        同理向左移动一位是: 0000 0001 二进制转换成十进制是:0^(8-1)+0^(7-1)+0^(6-1)+0^(5-1)+0^(4-1)+0^(3-1)+0^(2-1)+2^(1-1)=2^0=1

    到这里大家是不是明白了位运算的运算方式了!

       

    .Net Core
  • 相关阅读:
    127. Word Ladder(单词变换 广度优先)
    150. Evaluate Reverse Polish Notation(逆波兰表达式)
    32. Longest Valid Parentheses(最长括号匹配,hard)
    20. Valid Parentheses(括号匹配,用桟)
    递归桟相关
    python编写计算器
    python打印9宫格,25宫格等奇数格,且横竖斜相加和相等
    基于百度人工智能图片识别接口开发的自动录题系统
    自动收集有效IP代理
    python数据储存
  • 原文地址:https://www.cnblogs.com/zpy1993-09/p/14945994.html
Copyright © 2011-2022 走看看