位運算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的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章