把十進制轉成十六進制,我們有時真正需要的是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的。