课时19:Java运算符(位运算符)

简介: 课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。

课时19:Java运算符(位运算符)

摘要:

1.进制转换

2.范例:位与操作

3.范例:位或运算

4.范例:观察一个程序(八进制处理)

 

01.进制转换

 

位运算指的是可以按照二进制、八进制、十六进制进行数据处理。基本上考虑最多的还是二进制。位运算之中可以采用数据移位的处理方式实现一些数据的内容变化。(一些密码加密都有位运算)。

位运算实现的关键问题在于要进行十进制与二进制的转换,这种转换原则是数据除2取余,一直除到0为止,所有的余数按照倒序排列。

例如给出19,除2得9余1,再除2得4余1,再除2得1,余0,再除2得0余1。所以19的二进制是10011,java中是32位整形,所以在前面需要补27个零。

进制转换也可以通过计算器进行。

image.png

点击查看换为程序员。

image.png

可以选择进制,选择十进制,输入19再点击二进制,结果就是10011。

image.png

知道了二进制的数据变化之后,就可以利用&(有一个0与的结果就是0)、|(有一个1或的结果就是1)进行位的计算。

 

02.范例:位与操作

 

输入

int numA = 19;
Int numB = 5;
System.out.println(numA & numB);

此处在位上使用单与

image.png

编译执行结果如下。

image.png

19的二进制:00000000 00000000 00000000 00010011

5的二进制:00000000 00000000 00000000 00000101

&计算:00000000 00000000 00000000 00000001

 

03.范例:位或运算

 

修改System.out.println(numA | numB);

image.png

编译执行结果如下。

image.png

19的二进制:00000000 00000000 00000000 00010011

5的二进制:00000000 00000000 00000000 00000101

|计算:00000000 00000000 00000000 00010111

 

位运算最大的特点是可以进行移位的处理:>>、<<。

输入

int num =2;
System.out.println(num << 2);

image.png

编译执行结果。

image.png

2的二进制:00000000 00000000 00000000 00000010;

移位处理:00000000 00000000 00000000 00001000

 

04.范例:观察一个程序(八进制处理)

 

输入

int num =023;
System.out.println(num );

image.png

编译执行:

image.png

如果直接写023,是八进制。

十六进制使用0x:

输入

int num =0x23;
System.out.println(num );

image.png

编译执行:

image.png

 

面试题:请解释&&和&、|和||的区别?


逻辑运算之中:

与操作

-&&:表示逻辑与运算,若干个判断条件如果前面有条件返回了false,那么后面的条件不再判断,最终结果为false;

-&:所有的判断条件都要执行

或操作

-||:表示逻辑或运算,若干个判断条件如果前面有条件返回了true,那么后续条件不再判断,最终结果就是true;

-|:所有的判断条件都要执行


位运算:

-&:运算的两个数据位如果有一个是0结果就是0,全为1时结果就是1

-|:运算的两个数据位如果有一位是1,最终的结果就是1

 

二进制十六进制往往会在加密中使用。

相关文章
|
26天前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
37 12
|
1月前
|
SQL IDE 算法
《从头开始学java,一天一个知识点》之:运算符与表达式:算术、比较和逻辑运算
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」,每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《控制流程:if-else条件语句实战》。
41 6
|
1月前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
1月前
|
Java
课时18:Java运算符(逻辑运算符)
课时18介绍了Java中的逻辑运算符(与、或、非)。通过范例详细讲解了非操作的使用,展示了如何正确应用逻辑非(!)。接着分别探讨了与操作(& 和 &&)及或操作(| 和 ||),强调了短路运算符(&& 和 ||)在性能和安全性上的优势。课程通过具体代码示例演示了不同逻辑运算符的效果及其应用场景。
|
1月前
|
存储 Java 数据安全/隐私保护
Java语言位运算符详解
Java语言提供了7种位运算符:按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(&lt;&lt;)、带符号右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)。这些运算符主要用于对long、int、short、byte和char类型的数据进行二进制位级别的操作,不能用于double、float和boolean类型。文中详细讲解了每种运算符的规则和应用场景,并指出位运算在实际开发中有重要应用价值,不仅限于面试。
144 2
|
1月前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
1月前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
|
2月前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
203 60
【Java并发】【线程池】带你从0-1入门线程池
|
16天前
|
Java 中间件 调度
【源码】【Java并发】从InheritableThreadLocal和TTL源码的角度来看父子线程传递
本文涉及InheritableThreadLocal和TTL,从源码的角度,分别分析它们是怎么实现父子线程传递的。建议先了解ThreadLocal。
53 4
【源码】【Java并发】从InheritableThreadLocal和TTL源码的角度来看父子线程传递
|
1月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
93 23