位运算10进制转16进制

       把十进制转成十六进制,我们有时真正需要的是1111 1111这样的码,而不是FF这样的十六进制。需要这样的八位0和1来表示某些东西的状态。

十进制: 1 10 19 71 92 108 219
十六进制: 00000001 00001010 00010011 01000111 01011100 01101100 11011011

不多说,直接上代码:

主要位运算代码

//num是我们需要转化的数
	private static int getBit(int num, int index)
    {
        return (num & (0x1 << index)) >> index;
    }

全部代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		for(int i = 7; i >= 0; i--){
			System.out.print(getBit(219,i));
		}
	}
	//num是我们需要转化的数
	private static int getBit(int num, int index)
    {
        return (num & (0x1 << index)) >> index;
    }

}

代码中的0x1是最低位,也可以写成1。

当我们num为8的时候

index:0

返回的这位为0

index:1

0000 0010    //1左移1位

0000 1000     //num

0000 0000    //num & index

0000 0000    //(num & index)右移1位

返回的这位为0

index:2

0000 0100    //1左移2位

0000 1000     //num

0000 0000    //num & index

0000 0000    //(num & index)右移2位

返回的这位为0

index:3

0000 1000    //1左移3位

0000 1000     //num

0000 1000    //num & index

0000 0001    //num & index右移3位

返回的这位为1

index:4

0001 0000    //1左移4位

0000 1000     //num

0000 0000    //num & index

0000 0001    //num & index右移4位

返回的还是0

接下来的都是0

index:等于0~7,打印的是0001 0000

index:等于7~0,打印的是0000 1000

欢迎交流学习,其实我对位运算也不怎么会,如果是做单片机的,肯定对位运算很厉害。但我是做Java的。

发布了19 篇原创文章 · 获赞 2 · 访问量 6356

猜你喜欢

转载自blog.csdn.net/fjzzpljj/article/details/105246495