java 的基本知识

位运算符:java  定义了几个适用于整型(long.imt.short.charbyte)的位运算符。所有的整数类型都由不同宽度的二进制数表示。所有的整数类型(除char外)都是有符号的整数,它们既可以表示负数,也可以表示正数。

将byte转化为十六进制数:

方法1:
protected String toHex(byte buf) {
     int n = buf >= 0 ? buf : 256 + buf;
    String str = Integer.toHexString(n);
    return str.toUpperCase();
}

方法2:
public static void dumpHex(byte[] src, int len) {
        String num = "0123456789ABCDEF";
        System.out.println("len = " + len);
        for (int i = 0; i < len; i++) {
            int high = src[i] >> 4 & 0x0f;
            int low = src[i] & 0x0f;
            System.out.print(num.charAt(high) + "" + num.charAt(low) + " ");
           
            if ((i + 1) % 4 == 0) {
                System.out.print(" ");
                if ((i + 1) % 16 == 0) {
                    System.out.println();
                }
            }
           
        }
       
        System.out.println();
    }  

打印byte的各个位:

    public static void printBinaryByte(String s,byte i)
    {
        System.out.println(s+", int:" + i +",binary: ");
        System.out.print("");
        for(int j=7;j>=0;j--)
            if(((1 << j)& i)!=0)
                System.out.print("1");
            else
                System.out.print("0");
        System.out.println();
    }

实验步骤:
        byte i = (byte)150;
        printBinaryByte("byte i =150;" ,i);
        print(i);
输出:  
    10010110
    -106

在人的概念里面150是正数,但是在计算机中表示为10010110,所以由于最高位为1,所以在java虚拟机中认为这是一个负数,而且java虚拟中认为这个二进制序列是人的概念的某个负数通过补码运算得来的,所以当java中打印这个数时,通过补码运算转化为原来的二进制序列,计算该二进制序列为十进制或者其他进制的数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值