Java中的二进制、八进制、十六进制和移位运算

本文探讨了Java编程中涉及二进制、八进制、十六进制的表示及使用,同时深入讲解了移位运算的相关概念和实践示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的二进制、八进制、十六进制和移位运算

一个源代码说明一切:

package com.apkkids.javalanguage;

import java.util.Random;

/**
 * @author wxb Description:二进制、八进制、十六进制,移位运算
 * 
 *         2015-9-28 下午8:31:04
 */
public class BitCompute {
    public static void main(String[] argv) {
        testRadix();
        testBitMove();
    }

    /**
     * 测试各种进制之间的转换
     */
    public static void testRadix() {
        // 二进制没有特殊表达方法,可用字符串表示
        String i2str = "1000";
        // 八进制前面加0
        int i8 = 010;
        // 十进制是自然的
        int i10 = 8;
        // 十六进制前面加0x
        int i16 = 0x8;

        // 将二进制的字符串转换为int
        int i2 = Integer.parseInt(i2str, 2);

        // 测试证明i2、i8、i10和i16本质上是相等的,只是表达形式不同
        if (i2 == i8) {
            System.out.println("i2==i8");
        }
        if (i8 == i10) {
            System.out.println("i8==i10");
        }
        if (i10 == i16) {
            System.out.println("i10==i16");
        }
        int i = i2;
        // 转换为各种形式的字符串
        System.out.println("radix=2,i=" + Integer.toBinaryString(i));
        System.out.println("radix=8,i=" + Integer.toOctalString(i));
        System.out.println("radix=10,i=" + Integer.toString(i));
        System.out.println("radix=16,i=" + Integer.toHexString(i));
        // 甚至可以有7进制、5进制
        System.out.println("radix=7,i=" + Integer.toString(i, 7));
        System.out.println("radix=5,i=" + Integer.toString(i, 5));

        // 由此可知,在内存中i、i2、i8、i10、i16都是一样的,不同的只是表现形式;因此不同进制之间不需要转换,只是在需要时用不同的形式表达
        int j8 = 010;
        int j10 = j8;
        System.out.println("j8=" + j8 + ",j10=" + j10);
        int j16 = 0x10;
        j10 = j16;
        System.out.println("j16=" + j16 + ",j10=" + j10);
    }

    /**
     * 测试位移运算,经常用于计算Color
     */
    public static void testBitMove() {
        Random rand = new Random();
        int red = rand.nextInt(255);
        int green = rand.nextInt(255);
        int blue = rand.nextInt(255);
        int color = 0xFF000000;
        color = color | red << 16 | green << 8 | blue;
        System.out.println("red = " + Integer.toHexString(red) + ", green = "
                + Integer.toHexString(green) + ", blue = "
                + Integer.toHexString(blue));
        System.out.println("color in Hex = " + Integer.toHexString(color));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值