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

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

概述

从现代计算机中所有的数据二进制的形式存储在设备中。即 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);
    }
}
目录
相关文章
|
22天前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
34 1
|
23天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
22天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
22天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
52 1
|
1月前
|
缓存 算法 网络协议
OSPF的路由计算算法:原理与应用
OSPF的路由计算算法:原理与应用
45 4
|
29天前
|
机器学习/深度学习 监控 算法
基于反光衣和检测算法的应用探索
本文探讨了利用机器学习和计算机视觉技术进行反光衣检测的方法,涵盖图像预处理、目标检测与分类、特征提取等关键技术。通过YOLOv5等模型的训练与优化,展示了实现高效反光衣识别的完整流程,旨在提升智能检测系统的性能,应用于交通安全、工地监控等领域。
|
1月前
|
存储 算法 网络协议
OSPF的SPF算法介绍:原理、实现与应用
OSPF的SPF算法介绍:原理、实现与应用
78 3
|
1月前
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
41 0
|
23天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用
|
1月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
36 0
下一篇
DataWorks