逻辑运算符、位运算符、移位运算符、三目运算符、运算符的优先级

article/2025/9/17 12:11:43

一、逻辑运算符 :逻辑运算符的作用是用于连接布尔表达式的。
1、& (与,并且)
规律: 只有左右变量同时为true,那么结果才是true,否则就false。

2、| (或,或者)
规律: 只要两边的布尔表达式有一边为true,那么结果就为true,只有两边同时为false 的时候,结果才是false。

3、^ (异或)
规律: 只要两边的布尔表达式结果不一致,那么结果就为true,如果左右两边的布尔表达式一致,那么就为false。

4、! (非)

5、&& (短路与\双与)
短路与和单与符号的相同与不同点:
1)相同点: 运算的结果是一样的。
2)不同点: 使用短路与的时候,如果左边的布尔表达式为false,则不会在运算右边的布尔表达式,从而提高了效率。使用单与的时候,即使发现左边的布尔表达式为false,还是会运算右边的布尔表达式的。
那么有这样一个问题:单与的效率高于双与?
错,只有左边的布尔表达式为false时,双与的效率才要高于单与的。

6、|| (短路或\双或)
短路或与单或的相同点与不同点:
1)相同点:运算的结果是一致的。
2)不同点:使用短路或的时候,当发现左边的布尔表达式为true时,则不会运算右边的布尔表达式。使用单或的时候发现左边的布尔表达式为true,还是会运算右边布尔表达式。

二、位运算符:位运算符就是直接操作二进制位的,这样效率可能会高一些,因为计算机就是通过二进制对数据进行存取的。
1、位运算符与逻辑运算符的区别:
用于int类型数据时,就是位运算符。用于布尔表达式时就是逻辑运算符。

2、& (与)

3、| (或)

4、^ (异或)
规律: 如果操作数A连续异或同一个操作数两次,那么结果还是操作数A。

5、~ (取反)
举例:

分析:

6、应用:使用异或对图片数据进行加密。

import java.io.*;
class ImageTest{public static void main(String[] args)  throws Exception{//找到图片文件File inFile = new File("e:\\图片.jpg");File outFile = new File("e:\\加密后的图片.jpg");//建立数据通道,让图片的二进制数据流入FileInputStream input = new FileInputStream(inFile);FileOutputStream output = new FileOutputStream(outFile);//边读,边把读到的数据异或一个数据,再把这个数据写出int content = 0; //该变量是用于存储读取到的数据// 如果没有到文件的末尾,那么继续读取数据,读取到的数据已经存储到content变量中了。while((content = input.read())!=-1){  //加密方式与12做异或运算output.write(content^12);       }//关闭资源output.close();input.close();}
}

7、位运算符可能会出现的笔试题目:
1)交换两个变量的值,不准出现第三方变量。

class Demo1{public static void main(String[] args){int a = 3;int b = 5;//方式1:定义第三方变量。int temp = a;   //3 a = b;          //a = 5 b = temp; //方式2:相加法, 缺点:两个int类型的数据相加,有可能会出现超出int的表示范围。a = a+b;    // a =8b = a-b;    //b = 8 - 5 = 3a = a-b;    // a = 8 - 3 = 5//方式3: 可以使用异或。 缺点: 逻辑不清晰。a = a^b;  // a = 3^5b = a^b;  // b = (3^5)^5 = 3a = a^b; //  a = (3^5)^3 = 5    注意:(3^5)和(5^3)是一样的 }
}

2)取出一个二进制数据的指定位数。要求读取该二进制数据的低4位
答:

三、移位运算符(也是对二进制数进行操作的):
1、<<(左移)
规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移 的位数.
3<<1 = 3 *2(1) = 6;
3<<2 = 3*2(2) = 12
3<<3 = 3*2(3) = 24

2、>>(右移)
规律:一个操作数在做右移运算的时候,实际上就是等于该操作数除以2的n次方,n就是右移的位数。
3>>1 = 3 / 2(1) = 1
3>>2 = 3 / 2(2) = 0

3、>>>(无符号右移) :
无符号右移与右移的区别:进行右移运算的时候,如果操作数是一个正数,那么左边的空缺位使用0补,如果操作数是一个负数,那么左边的空缺位使用1补。而使用无符号右移的时候,不管是正数还是负数都统一使用0补。

4、没有无符号左移:原因不用解释了吧。

5、笔试题目:使用最高的效率算出2乘以8的结果。
答:2<<3 = 2*2(3) = 16; 因为只有一个操作数(2),所以效率相对较高。

四、三元运算符(三目运算符)
1、格式:布尔表达式?值1:值2 ;
2、三元运算符要注意的细节:
使用三元运算符的时候,一定要使用该表达式返回的结果,或者是定义一个变量接收该表达式返回的结果。
说简单点就是不能让还有三目运算符的语句自成一句,例如:age>=18?"成年人":"未成年人";,这种报错。
应该是:result = (age>=18?"成年人":"未成年人");
或是:System.out.println(age>=18?"成年人":"未成年人");

五、运算符的优先级:



http://chatgpt.dhexx.cn/article/sxbNS7af.shtml

相关文章

C/C++逻辑运算符 | | 和 的优先级误区——优先级决定运算顺序吗?

C运算符优先级表&#xff1a; 根据这个表格&#xff0c;我们很容易得出结论&#xff1a;&&的优先级大于|| 下面看一段代码&#xff0c;来验证这个结论 #include<iostream> using namespace std; int main() {int x 3;int y 1 || (x 1) && (x 1);pr…

运算符的优先级顺序

运算符优先级口诀&#xff1a;单目算术位关系&#xff0c;逻辑三目后赋值。 单目&#xff1a; 、- - 算术&#xff1a;、-、*、/、% 位&#xff1a;位移运算符&#xff1a;<<&#xff08;左移位&#xff09;、>>&#xff08;带符号右移位&#xff09;、>>>…

c++运算符优先级归纳

C一共有 18个优先级&#xff0c;运算中按优先级进行性计算&#xff0c;当优先级相同时&#xff0c;根据结合性规则来决定。 结合性&#xff1a; 1.从左到右&#xff08;L-R&#xff09;&#xff1a;操作数和操作符结合的顺序大部分是从左到右结合性的&#xff0c;例如&#xff…

C++运算符的优先级

有括号的优先级最高&#xff0c;涉及对象的运算符&#xff1b; 自增自减&#xff0c;取值&#xff0c;取地址运算符&#xff0c;逻辑非&#xff0c;按位取反&#xff0c;强制类型转换&#xff0c;长度运算符 先乘除后加减 左移右移运算符 比较运算符、三目运算符 各类赋值运算…

运算符优先级

C语言中&#xff0c;运算符除了常见的三大类&#xff0c;算术运算符、关系运算符与逻辑运算符之外&#xff0c;还有一些用于完成特殊任务的运算符。 运算符的运算优先级共分为15 级&#xff0c;1 级最高&#xff0c;15 级最低。 在表达式中&#xff0c;优先级较高的先于优先级…

【博客624】MAC地址表、ARP表、路由表(RIB表)、转发表(FIB表)

MAC地址表、ARP表、路由表(RIB表/FIB表) MAC地址表 MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系&#xff0c;代表了交换机从哪个端口学习到了某个MAC地址&#xff0c;交换机把这个信息记录下来&#xff0c;后续交换机需要转发数据的时候就可以根据报文的目的MAC地…

【新星计划-2023】什么是ARP?详解它的“解析过程”与“ARP表”。

一、什么是ARP ARP&#xff08;地址解析协议&#xff09;英文全称“Address Resolution Protocol”&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确…

ARP表 MAC表 路由表

ARP表是一个动态表&#xff0c;存储在计算机当中&#xff0c;目的是做一个ip地址与mac地址的对应。 假设在同一子网段&#xff0c;计算机A与计算机B通信 计算机A的ip地址192.168.0.1 MAC地址AA-AA-AA-AA-AA-AA 计算机B的ip地址已知192.168.0.2 MAC地址未知 那么计算机A就要…

Linux上ARP表,路由表的解释

为厘清数据在网络中的传输流向和具体的实现过程&#xff0c;现对ARP表&#xff0c;路由表进行学习如下。 ARP&#xff08;Address Resolution Protocol&#xff09;地址解析协议。IP数据包经常通过以太网进行发送&#xff0c;以32位的IP地址作为源/目的地址。但是以太网设备不能…

Windows7 arp表删除方法

Windows7 arp表删除方法 1 使用arp命令删除2 使用其他命令删除 Winsows7系统删除arp表有很多方法&#xff0c;这里介绍两种简单的方法&#xff0c;都是直接使用命令提示符应用&#xff08;cmd&#xff09;进行删除。 1 使用arp命令删除 1.打开cmd&#xff1a;直接在搜索中搜索…

FDB表-ARP表-路由表

简介 二层转发通过查询FDB表实现&#xff0c;不对报文做任何修改。三层转发通过查询路由表和arp表实现&#xff0c;路由表确定出接口&#xff0c;然后以出接口的MAC作为报文的源MAC&#xff1b;以报文的目的IP查询arp表获取下一跳MAC&#xff0c;以该MAC作为报文的目的MAC; 因…

转发表(MAC表)、ARP表、路由表总结

全文概要 计算机网络中一个关键步骤在于通信路径上不同节点对于流经本节点的数据包转发&#xff0c;常见的交换设备主要是交换机(第二层、三层)和路由器(第三层)&#xff0c;在实际运行时&#xff0c;它们各自维护一些表结构帮助完成数据包的正确寻址与转发&#xff0c;本文详…

Mac地址表、ARP表、路由表

一、Mac地址表。 Mac地址表记录了Mac地址和对应接口的关系&#xff0c;如图1-1所示。 图1-1 Mac地址表代表了交换机从某个接口学习到了它的Mac地址并记录下来&#xff0c;后续交换机如果要转发数据则可通过报文的Mac地址对应Mac地址表来转发数据。 二、ARP表。 ARP表记录着路…

ARP表、MAC表、路由表是什么

最近学习网络知识&#xff0c;租了一个3A服务器用来做实验&#xff0c;很方便&#xff0c;有兴趣后台私信我 1、ARP表 提起ARP表必然先想起ARP&#xff08;address resolution protocol&#xff09;协议&#xff0c;地址解析协议。 在实际应用中&#xff0c;我们经常遇到这样的…

MAC地址表、ARP表和路由表详解

一&#xff1a;MAC地址表详解 说到MAC地址表&#xff0c;就不得不说一下交换机的工作原理了&#xff0c;因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表&#xff0c;交换机就是根据这张表负责将数据帧传输到指定的…

网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!

背景说明&#xff1a; 网络的知识&#xff0c;是大家开发过程中&#xff0c;非常重要也是非常底层的知识。所以网络知识是一个非常、非常核心的面试知识点。 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;其相关面试题是一个非常、非常高频的交流话题。社群中&#xff…

路由表(RIB表、FIB表)、ARP表、MAC表整理

在一些常见的网络设备中(如交换机、路由器)&#xff0c;为了实现网络转发功能&#xff0c;各自通过维护一些表项来完成路由寻址及快速转发功能&#xff0c;其中比较重要的表项有&#xff1a; 路由表转发表Mac表ARP表 本文对这网络中的最关键的四个表项做一个详细介绍。 目录…

MAC表,ARP表,路由表总结

全文概要 计算机网络中一个关键步骤在于通信路径上不同节点对于流经本节点的数据包转发&#xff0c;常见的交换设备主要是交换机(第二层、三层)和路由器(第三层)&#xff0c;在实际运行时&#xff0c;它们各自维护一些表结构帮助完成数据包的正确寻址与转发&#xff0c;本文详细…

LINUX下ARP表操作

Linux下操作ARP表项 ARP缓存表arp_tbl由协议栈在运行期间自动维护&#xff0c;包括邻居新建&#xff0c;更新&#xff0c;回收等。同时&#xff0c;TCP/IP协议栈的实现中也提供了三个命令&#xff0c;可以用来由用户维护arp_tbl&#xff0c;这三个命令分别是SIOCDARP(删除arp_t…

ARP协议报文格式及ARP表简述

目录 1 ARP协议报文概述 1.1 ARP/RARP报文格式 1.2 ARP报文抓包 1.2.1 arp请求 1.2.2 arp应答 2 ARP映射表 2.1 动态ARP表项 2.2 静态ARP表项 2.3 短静态ARP表项 2.4 长静态ARP表项 3 ARP攻击&#xff08;mac地址欺骗&#xff09; 1 ARP协议报文概述 ARP&#xff0…