进制转换
1.进制间的转换一般都是将进制转换成二进制进行运算
例如:将十进制转换成十六进制,num&15(0x0f)
2.四位二进制等于十六进制,三位二进制等于八进制。
3.负数的二进制是取反+1
例如 -6 为整形占4个字节32位
6的表示形式为0000 0000 0000 0000 0000 0000 0000 0110
取反+1
-6的表示为 1111 1111 1111 1111 1111 1111 1111 1010
~6表示为 1111 1111 1111 1111 1111 1111 1111 1001 =-7
-1取反为 0000 0000 0000 0000 0000 0000 0000 0111 =7
位运算符
1.<< >> >>> & ^ ~ |
一个数异或同一个数两次还是原来的数(可以用于加密)
7^4^4=7
使用^完成交换
n=n^m
m=n^m
n=n^m
public class Test {
//十进制变二进制
public static void toBin(int num)
{
StringBuffer sb = new StringBuffer();
while(num!=0){
sb.append(num%2);
num>>>=1;
}
System.out.println(sb.reverse());
}
//十进制变十六进制
public static void toHex(int num)
{
StringBuffer sb=new StringBuffer();
for(int x=0;x<8;x++)
{
int temp=num&15;
if(temp>9)
//System.out.println((char)(temp-10+'A'));
sb.append((char)(temp-10+'A'));
else
//System.out.println(temp);
sb.append(temp);
num=num>>>4;
}
System.out.println(sb.reverse());
}
public static void main(String[] args)
{
toBin(6);
toHex(60);
System.out.println(Integer.toBinaryString(6));
}
}
//十进制转十六进制
public static void toHex(int num)
{
int pos=arr.length;
char[] chs={'0','1','2','3'
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
//定义数组实现反转
char[] arr=new char[8];
/*for(int x=0;x<8;x++)
{
int temp=num & 15;
System.out.println(chs[temp]);
num=num>>>4;
}*/
while(num!=0)
{
int temp=num & 15;
arr[pos--]=chs[temp];
num=num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
//将十进制数转化成其他进制
Integer.toBinaryString()
Integer.toHexString()
Integer.toOctalString()
1.进制间的转换一般都是将进制转换成二进制进行运算
例如:将十进制转换成十六进制,num&15(0x0f)
2.四位二进制等于十六进制,三位二进制等于八进制。
3.负数的二进制是取反+1
例如 -6 为整形占4个字节32位
6的表示形式为0000 0000 0000 0000 0000 0000 0000 0110
取反+1
-6的表示为 1111 1111 1111 1111 1111 1111 1111 1010
~6表示为 1111 1111 1111 1111 1111 1111 1111 1001 =-7
-1取反为 0000 0000 0000 0000 0000 0000 0000 0111 =7
位运算符
1.<< >> >>> & ^ ~ |
一个数异或同一个数两次还是原来的数(可以用于加密)
7^4^4=7
使用^完成交换
n=n^m
m=n^m
n=n^m
public class Test {
//十进制变二进制
public static void toBin(int num)
{
StringBuffer sb = new StringBuffer();
while(num!=0){
sb.append(num%2);
num>>>=1;
}
System.out.println(sb.reverse());
}
//十进制变十六进制
public static void toHex(int num)
{
StringBuffer sb=new StringBuffer();
for(int x=0;x<8;x++)
{
int temp=num&15;
if(temp>9)
//System.out.println((char)(temp-10+'A'));
sb.append((char)(temp-10+'A'));
else
//System.out.println(temp);
sb.append(temp);
num=num>>>4;
}
System.out.println(sb.reverse());
}
public static void main(String[] args)
{
toBin(6);
toHex(60);
System.out.println(Integer.toBinaryString(6));
}
}
//十进制转十六进制
public static void toHex(int num)
{
int pos=arr.length;
char[] chs={'0','1','2','3'
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
//定义数组实现反转
char[] arr=new char[8];
/*for(int x=0;x<8;x++)
{
int temp=num & 15;
System.out.println(chs[temp]);
num=num>>>4;
}*/
while(num!=0)
{
int temp=num & 15;
arr[pos--]=chs[temp];
num=num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
//将十进制数转化成其他进制
Integer.toBinaryString()
Integer.toHexString()
Integer.toOctalString()