位运算入门及简单算法题的应用

简介: 位运算入门及简单算法题的应用

概述

从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。

将人类自然语言转化为机器语言来参与运算

位运算通常比其他运算更高效,原因如下:

  1. 硬件支持:现代计算机中的处理器通常会针对位运算提供专门的硬件支持,使得位运算可以在硬件层面上被高效执行。
  2. 简单操作:位运算是对二进制位进行简单的逻辑操作,相比其他运算(如乘法、除法)而言,位运算的操作逻辑更为简单,因此执行速度通常更快。
  3. 逻辑清晰:位运算的逻辑清晰,不涉及复杂的算术计算,因此在一些情况下,使用位运算可以使代码更易于理解和维护。
  4. 优化算法:在一些算法和数据结构中,位运算可以用来实现高效的算法,例如位图、哈希算法等,这些算法在性能上通常比其他实现更高效。
  5. 内存占用:位运算可以在一些情况下减少内存占用,例如使用位掩码来表示多个布尔值,可以节省内存空间。

总的来说,位运算在处理位级别的数据时通常更高效,但在某些情况下,它可能不够直观,需要权衡使用场景和代码可读性。

运算符

学习资料

位运算(&、|、^、~、>>、 | 菜鸟教程

基本用途

判断奇偶

只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。

因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。

乘与除

可以有效防止二进制补码占据符号位后参与运算

每左移<<一位,相当于该数乘以2。

操作数每右移>>一位,相当于该数除以2。

算法题入门

package Dduo;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
      //判断一个数是2的幂次方
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        //与运算 二进制补码都为1 才为1 否则为0
        System.out.print((n>0)&&((n&(n-1))==0));
        
    }
}

特征 初等数论 同余问题

package Dduo;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
      //判断一个数是4的幂次方
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        System.out.print(  (n>0) && (  ((n&(n-1))==0) && (n%3==1) )  );
    }
}

如果一个数是偶数 在 -1

那么他二进制补码 最左边的1 右边的所有数都要变

然而这个不是目的

这时我们再进行与运算

运算一次 消去了一个0

package Dduo;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
      //判断一个十进制数转化为二进制后设置位的个数
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        int cnt =0;
        while(n>0) {
         n &=(n-1);
         cnt++;
        }
       
        System.out.print(cnt);
    }
}
目录
相关文章
|
2月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
53 1
|
6月前
|
分布式计算 并行计算 算法
MapReduce在实现PageRank算法中的应用
总结来说,在实现PageRank算法时使用MapReduce能够有效地进行大规模并行计算,并且具有良好的容错性和可扩展性。
207 76
|
4月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
107 3
|
4月前
|
存储 监控 算法
基于 C# 时间轮算法的控制局域网上网时间与实践应用
在数字化办公与教育环境中,局域网作为内部网络通信的核心基础设施,其精细化管理水平直接影响网络资源的合理配置与使用效能。对局域网用户上网时间的有效管控,已成为企业、教育机构等组织的重要管理需求。这一需求不仅旨在提升员工工作效率、规范学生网络使用行为,更是优化网络带宽资源分配的关键举措。时间轮算法作为一种经典的定时任务管理机制,在局域网用户上网时间管控场景中展现出显著的技术优势。本文将系统阐述时间轮算法的核心原理,并基于 C# 编程语言提供具体实现方案,以期深入剖析该算法在局域网管理中的应用逻辑与实践价值。
85 5
|
4月前
|
存储 机器学习/深度学习 算法
论上网限制软件中 Python 动态衰减权重算法于行为管控领域的创新性应用
在网络安全与行为管理的学术语境中,上网限制软件面临着精准识别并管控用户不合规网络请求的复杂任务。传统的基于静态规则库或固定阈值的策略,在实践中暴露出较高的误判率与较差的动态适应性。本研究引入一种基于 “动态衰减权重算法” 的优化策略,融合时间序列分析与权重衰减机制,旨在显著提升上网限制软件的实时决策效能。
119 2
|
5月前
|
存储 监控 算法
公司员工电脑监控软件剖析:PHP 布隆过滤器算法的应用与效能探究
在数字化办公的浪潮下,公司员工电脑监控软件成为企业管理的重要工具,它能够帮助企业了解员工的工作状态、保障数据安全以及提升工作效率。然而,随着监控数据量的不断增长,如何高效地处理和查询这些数据成为了关键问题。布隆过滤器(Bloom Filter)作为一种高效的概率型数据结构,在公司员工电脑监控软件中展现出独特的优势,本文将深入探讨 PHP 语言实现的布隆过滤器算法在该软件中的应用。
90 1
|
6月前
|
存储 监控 算法
基于 PHP 语言的滑动窗口频率统计算法在公司局域网监控电脑日志分析中的应用研究
在当代企业网络架构中,公司局域网监控电脑系统需实时处理海量终端设备产生的连接日志。每台设备平均每分钟生成 3 至 5 条网络请求记录,这对监控系统的数据处理能力提出了极高要求。传统关系型数据库在应对这种高频写入场景时,性能往往难以令人满意。故而,引入特定的内存数据结构与优化算法成为必然选择。
125 3
|
6月前
|
人工智能 自然语言处理 供应链
从第十批算法备案通过名单中分析算法的属地占比、行业及应用情况
2025年3月12日,国家网信办公布第十批深度合成算法通过名单,共395款。主要分布在广东、北京、上海、浙江等地,占比超80%,涵盖智能对话、图像生成、文本生成等多行业。典型应用包括医疗、教育、金融等领域,如觅健医疗内容生成算法、匠邦AI智能生成合成算法等。服务角色以面向用户为主,技术趋势为多模态融合与垂直领域专业化。
|
6月前
|
机器学习/深度学习 算法 机器人
强化学习:时间差分(TD)(SARSA算法和Q-Learning算法)(看不懂算我输专栏)——手把手教你入门强化学习(六)
本文介绍了时间差分法(TD)中的两种经典算法:SARSA和Q-Learning。二者均为无模型强化学习方法,通过与环境交互估算动作价值函数。SARSA是On-Policy算法,采用ε-greedy策略进行动作选择和评估;而Q-Learning为Off-Policy算法,评估时选取下一状态中估值最大的动作。相比动态规划和蒙特卡洛方法,TD算法结合了自举更新与样本更新的优势,实现边行动边学习。文章通过生动的例子解释了两者的差异,并提供了伪代码帮助理解。
406 2

热门文章

最新文章