Java 进制

一. 简介

package b_operator;

public class F_Radix {

    public static void main(String[] args) {
        /*
         * 进制
         */
        int a = 10; // 默认为十进制
        int b = 0b10; // 二进制以0B开头
        int c = 010; // 八进制以0开头
        int d = 0X10; // 十六进制以0x开头

        // 输出十进制
        System.out.println("a=" + a + ", b=" + b + ", c=" + c + ", d=" + d);
        System.out.printf("a=%d\n", a);

        // 输出二进制:使用"Integer.toBinaryString(x)",x为要输出的值
        System.out.println("b=" + Integer.toBinaryString(b)); // 暂时记住该代码

        // 输出八进制和十六进制:使用"进制转义符 + System.out.printf"(不能使用"System.out.println",会报错)
        System.out.printf("c=%o\n", c); // %o为八进制转义符,c表示要输出的值
        System.out.printf("d=%x\n", d);
        System.out.printf("c=%o,d=%x\n", c, d); // 可以同时使用多个进制转义符,"进制转义符"和"要输出的值"从左至右依次匹配
        // System.out.printf("%o,%x", c); // 必须为每个进制转义符都指定一个"要输出的值",否则程序运行时会报错

        /*
         * 计算机内部都是用补码来存储和表示值的
         */
        System.out.println(0b00000000000000000000000000000101);
        System.out.println(0b11111111111111111111111111111011);
    }

}

二. 位运算符

package b_operator;

public class G_BitOperator {

    public static void main(String[] args) {
        int a = 5; // 二进制为00000000 00000000 00000000 00000101
        int b = 8; // 二进制为00000000 00000000 00000000 00001000

        // 与
        System.out.println(a & b); // 00000000 00000000 00000000 00000000
        // 或
        System.out.println(a | b); // 00000000 00000000 00000000 00001101
        // 非
        System.out.println(~a); // 11111111 11111111 11111111 11111010
        System.out.println(~a + 1); // -5的补码
        // 异或
        System.out.println(a ^ b); // 00000000 00000000 00000000 00001101
        // 左移
        System.out.println(a << 2); // 00000000 00000000 00000000 00010100
        // 右移
        System.out.println(a >> 2); // 00000000 00000000 00000000 00000001
        System.out.println(-a >> 2); // 11000000 00000000 00000000 00000001
        // 无符号右移
        System.out.println(-a >>> 2); // 00000000 00000000 00000000 00000001


        // 位运算是非短路运算
        int i = 1;
        boolean bool = false & (i = 2) == 5 & true; // 左边虽然为false,但还是会继续执行右边的代码
        System.out.println(i);
        System.out.println(bool);
    }

}

三. 位运算符和逻辑运算符的区别

逻辑运算符:

  • 逻辑运算符针对布尔值进行运算。
  • 短路运算。

位运算符:

  • 位运算符是针对二进制的位进行运算。
  • 非短路运算。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡醒的人想拯救世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值