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

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));
    }
}

你可能感兴趣的:(java,源代码)