资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

java数据结构之位运算

Java 更新时间: 发布时间: 计算机考试归档 最新发布

java数据结构之位运算

本篇是java整数型二进制位运算的一些操作,算是数据结构最基础的入门篇,大家感兴趣可以根据代码自行测试想要的场景。

1、java的int类型为32位的二进制数

         写一段程序,打印int整数类型对应的二进制(这里以最大正数和最小正数为例)

 Integer对象中MAX_VALUE为2147483647,Integer对象中MIN_VALUE为-2147483648

  这两个数的绝对值是相差1的,因为负数的时候最高位为符号位优有值。

public class PrintB {
    
    public static void print(int number){
       for(int i=31;i>=0; i--){
           //number和1左移(位运算)i位与 结果显示0或1
           System.out.print((number & (1<< i) )==0 ? "0":"1");
       }
        System.out.println();
    }

    public static void main(String[] args) {
      
   int a =Integer.MAX_VALUE;
    int b =Integer.MIN_VALUE;
    System.out.printf("最大整数:");
    System.out.println(a);
    System.out.printf("最小整数:");
    System.out.println(b);
    System.out.printf("最大整数的二进制位:");
    print(a);
    System.out.printf("最小整数的二进制位:");
    print(b);
    }
}

 2、关于java的整数型位运算

  • 取反操作

     整数类型取反的运算符为“~”,一个数值的相反数,相当于二进制位运算取反加1

public static void main(String[] args) {
        int a= Integer.MAX_VALUE;
        //取值相反数
        int b =-a;
        System.out.println(a);
        System.out.println(b);
        //位运算取反加1
        int c=~a+1;
        System.out.println(c);
    }

  

  •  取反操作特例(最小数取反还是他本身)
  public static void main(String[] args) {
        int a= Integer.MIN_VALUE;
        //取值相反数
        int b =-a;
        System.out.println(a);
        System.out.println(b);
        //位运算取反加1
        int c=~a+1;
        System.out.println(c);
    }

  • 位运算 或、与、异或的操作 
 public static void main(String[] args) {
        int a= 12;
        System.out.printf("a的二进制数:  ");
        print(a);
        int b= 13;
        System.out.printf("b的二进制数:  ");
        print(b);
        //或运算
        int c =a|b;
        System.out.printf("a|b的二进制数:");
        print(c);
        //与运算
        int d =a&b;
        System.out.printf("a&b的二进制数:");
        print(d);
        //异或运算
        int f =a^b;
        System.out.printf("a^b的二进制数:");
        print(f);

    }

  •  位移操作">>"和">>>"的区别

  >>为带符号位移,>>>为不带符号位移,不带符号位移,高位用0来补,带符号位移的符号位不变

public class PrintB {
    
    public static void print(int number){
       for(int i=31;i>=0; i--){
           //number和1左移(位运算)i位与 结果显示0或1
           System.out.print((number & (1<< i) )==0 ? "0":"1");
       }
        System.out.println();
    }

    public static void main(String[] args) {
       int a = Integer.MIN_VALUE;
        print(a);
        //带符号位移,最高位的符号位1不变,然后右移一位
        print(a>>1);
        //不带符号位移,最高位的补0,然后右移一位
        print(a>>>1);
        System.out.println("========================");
        int b = Integer.MAX_VALUE;
        print(b);
        //带符号位移,最高位的符号位1不变,然后右移一位
        print(b>>1);
        //不带符号位移,最高位的补0,然后右移一位
        print(b>>>1);
    }
}

 

本篇讲解了下java最基本的二进制位运算操作,算是新手的一个启蒙篇,大家可以用上面代码,多测试一些自己觉得有意思的场景 。后面会继续和大家分析基础的数据结构知识。

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1094268.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【java数据结构之位运算】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2