------- android培训、java培训、期待与您交流! ----------
以下仅为个人平时学习笔记,可能有有错误的地方,希望有看到者提出来,共同讨论,谢谢!
1.移位运算符:
a.<<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
b.>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1.
c.>>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右
移相同,对于负数来说不同(因为负数符号位为1,而应用此运算符却在高位补0,转换为了正数)。
**************************************************进制转换*****************************************************
1.十进制转换为二进制
a. // 正数十进制转换为二进制
public static String toBinString(int num)
{
StringBuilder sb = new StringBuilder();
while (num > 0)
{
sb.append(num % 2);
num = num >> 1;
}
return sb.reverse().toString();
}
b. // 十进制转换为二进制(正数负数均可以)
public static String toBinString(int num)
{
StringBuilder sb = new StringBuilder();
while (num != 0)
{
sb.append(num % 2);
num = num >>> 1;
}
if(sb.length()>32)
{
return sb.reverse().substring(0,sb.length()-1);
}
return sb.reverse().substring(0,sb.length());
}
2.十进制转换为16进制
a. //十进制转换为16进制(正数负数均可以)
public static String toHexString(int num)
{
StringBuilder sb = new StringBuilder();
while (num != 0)
{
int temp = num &15;
if (temp < 10)
{
sb.append(temp);
} else
{
sb.append((char) (temp - 10 + 'A'));
}
num >>>= 4;
}
sb.append("x0");
return sb.reverse().toString();
}
b. // 查表法十进制转换为16进制
public static String toHexString2(int num)
{
char[] arrChars =
{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
StringBuilder sb = new StringBuilder();
while (num != 0)
{
int temp = num & 15;
sb.append(arrChars[temp]);
num >>>= 4;
}
sb.append("x0");
return sb.reverse().toString();
}