【数据结构与算法】一、位运算

本文介绍了Java中int类型的位运算,包括如何打印32位二进制整数,解释了int的范围及其负数表示。重点讲解了异或操作,并通过实例展示了在冒泡排序中如何使用异或交换两个数。此外,还讨论了利用位运算快速判断奇偶性、计算乘除2、确定2的幂次方以及求1的个数等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

大家好,我是春风。

因为之前对于数据结构与算法,都是零零散散的学习,学完之后,发现自己掌握的也不牢靠,所以从今天开始,准备完整的系统性的学习数据结构与算法。(所看视频:左神的数据结构与算法课程)

算法追求的就是解决问题的效率,要效率高,就一定要先了解位运算

一、Java中的int

打印int的二进制数:

我们知道Java中int型整数在二进制中是32位,那怎么打印我们这个32位的二进制整数呢?

解:循环32次,每次将1左移i位,然后与上整数本身。

整型的范围:

无符号整数的最大值是:2^32 - 1

我们知道有符号整数的范围是-2^31 ~ 2^31-1,怎么来的?

有符号整数,也就是我们Java中的int,最高位0、1表示符号,1就是负数,0就是非负数。

那最大值就是0 ~ 30这31个位置都是1,也就是2^31 - 1。

而int中的负数用32位二进制表示比较特殊:除了第32位上用1来表示符号负数外,剩下的31个位置上,取反+1才是最终那个负数,所以-1就是32位全部为1(除符号位其他全部取反就为0,然后+1)

而最小值,就是0~30位全部为0,取反后全为1,然后+1,也就是-2^31

为什么负数要做成取反&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值