A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵海洋 高级黑马   /  2013-4-25 11:10  /  1543 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

基本进制知识:
数制也称为计数制,是指用一组固定的符号和统一的规则来表示数值的方法。按进位的方法进行计数,称为进制计数制。在日常生活和计算机中采用的都是进位计数制。比较常用的是:二进制,八进制,十进制,十六进制。
十进制:这个没必要多说,因为日常生活中的进位计数制都是十进制。
二进制:计算技术中最广泛采用的一种数制,使用0和1表示数,进位规则是“逢二进一”,借位规则是“借一当二”。当数码很大时,书写起来很费事。
八进制:规则和二进制相似,用0~7表示数码,进位规则是“逢八进一”,借位规则是“借一当八”。
十六进制:规则和二进制以及八进制相似,用0~9,A~F(a~f)表示数码,进位规则是“逢十六进一”,借位规则是“借一当十六”。
之所以引进八进制和十六进制,主要是为了书写方便,在计算机中还是用二进制表示。
java中相关知识及代码:
十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。
基础视频中代码:
  1. class jinzhi
  2. {
  3. public static void main(String[] args)
  4. {
  5. toBin(6);
  6. toHex(60);
  7. }
  8. //十进制转化成二进制
  9. public static void toBin(int num)
  10. {
  11. StringBuffer sb= new StringBuffer ();//创建一个对象,能装数据的一个容器。
  12. while (num>0)
  13. {
  14. //System.out.println(num%2);
  15. sb.append(num%2);
  16. num=num/2;
  17. }
  18. System.out.println(sb.reverse());//reverse意思为反转
  19. }
  20. //十进制转化成十六进制
  21. public static void toHex (int num)
  22. {
  23. StringBuffer sb = new StringBuffer ();
  24. for(int x=0;x<8;x++)
  25. {
  26. int temp = num & 15;
  27. if (temp>=10)
  28. sb.append((char)(temp-10+'A'));
  29. else sb.append(temp);
  30. num=num>>>4;
  31. }
  32. System.out.println(sb.reverse());
  33. }
  34. }
复制代码
进制之间转换方法:
方法一:
java.lang.Integer类中有个parseInt方法,可以轻松实现各种进制转为十进制。
parseInt(String s, int radix)
例子:
parseInt("0", 10) ;returns 0
parseInt("-FF", 16) ;returns -255
parseInt("1100110", 2) ;returns 102
其中第二个参数为制定的基数,即第一个参数是几进制数。
方法二:
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成 八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
代码示例:

public class Test{
public static void main(String args[]){
int i=100;
String binStr=Integer.toBinaryString(i);
String otcStr=Integer.toOctalString(i);
String hexStr=Integer.toHexString(i);
System.out.println(binStr);
System.out.println(otcStr);
System.out.println(hexStr);
}


方法三:java中的Integer和long提供toString(int i, int radix)静态方法,可以将一个任意进制的整数转换为其他进制。
例子:
int otcStr = 0567;
int hexStr = oxAbcd;
int tenStr = 1000;
System.out.println(Integer.toString(otcStr,2));
System.out.println(Integer.toString(tenStr,16));
System.out.println(Integer.toString(hexStr,10));
补充,Integer和Long中的toString(int i)可以让其他进制转换成十进制。
方法四:
Integer或者Long中的valueOf(String str,int radix),第一个参数是String类型,第二个参数是指定前边的进制类型,该方法返回一个等于以下值的 Integer 对象:
new Integer(Integer.parseInt(s, radix))
例子:
将十六进制数转换成十进制:
Integer.valueOf("FFFF",16).toString()

我能想到的方法大概有以上几种,希望各位补充,修改。

3 个回复

倒序浏览
易出错点:
注意parseInt方法中第二个参数是表示第一个参数的进制类型,而不是你要转换的禁止类型。
Integer和Long的toString方法是分为两种,一种是只有一个参数,只能转成十进制,第二种是两个参数,第二个参数是你要转换的进制类型,此处与parseInt区别开,易混易错。
valueOf方法如果想直接输出的话加一个toString方法一字符串方式直接输出。
回复 使用道具 举报
我想问一下...如果不是2..4...8..16...32 这样2^n进制..
你怎么做....
回复 使用道具 举报
刘胜寒 发表于 2013-4-25 13:16
我想问一下...如果不是2..4...8..16...32 这样2^n进制..
你怎么做....

parseInt 可以用啊,例如parseInt("Kona", 27) ;returns 411787
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马