栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java--位运算符举例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java--位运算符举例

目录

1基础2交换两个变量值3求绝对值4求某一十进制数的补码中包含的1的个数

1基础
2交换两个变量值
//【交换值】任意给两个整数(int)值,请交互它们的值。

public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入两个变量的值:");
        int num1 = input.nextInt(),num2 = input.nextInt();

        //常规做法:使用第三个变量
        int temp;
        temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println("法一:交换后这两个变量的值是:" + num1 + "  " + num2);

        //不使用第三个变量,使用两个变量的加减操作
        num1 = num1 + num2;
        num2 = num1 - num2;     //num2 = num1 + num2 - num2 = num1;
        num1 = num1 - num2;     //num1 = num1 + num2 - num1 = num2;
        System.out.println("法二:再次交换后这两个变量的值是:" + num1 + "  " + num2);

        //不使用第三个变量,使用位操作:按位异或^:同0异1.
        // 0和任何数做异或运算为此数本身,任何数与它自己做亦或为0.
        num1 = num1 ^ num2;
        num2 = num1 ^ num2;     //num2 = num1^ num2 ^ num2 = num1
        num1 = num1 ^ num2;     //num1 = num1 ^ num2 ^ num1 = num2;
        System.out.print("法二:再次交换后这两个变量的值是:" + num1 + "  " + num2);
    }
}

3求绝对值
//用位运算符求一个整数(int型)的绝对值
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个数:");
        int num = input.nextInt();

        //方法一:通过负数求反加1求
        int result1 = num >=0 ? num : ~num + 1;
        System.out.println("法一:此数的绝对值是:" + result1);

        //方法二:通过位运算求
        int temp = num >> 31;
        int result2 = (num ^ temp) - temp;
        System.out.print("法二:此数的绝对值是:" + result2);
    }
}

4求某一十进制数的补码中包含的1的个数
//一个十进制整数(int型)的二进制表示形式(补码)中,包含的1个数?
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个数:");
        int num = input.nextInt();
        int count = 0;
        for (int i = 0;i < 8;i ++)	//8表示二进制的位数,可以设置成8,16,32,64等,结果也相应的不同。
            if ((num >>> i & 1) == 1)
                count ++;
            System.out.print(num + "的二进制补码形式中1的个数有 " + count + " 个。");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号