- 浏览: 1357241 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
去年在網上給一家公司投簡歷的時候,對方要求寫一個任意進制轉換的函數,當時沒有回過神來,也不知道JAVA中有這樣的函數,呵呵。于是就自己操刀,寫了這個三十六進制之音隨便轉的函數。不過,權當練習吧,如果你不會,倒真的可以看看,學學二進制到十進制、十進制到二進制之音是如何轉何的。
/* 程序说明: 理论上是一个任意进制的程序,但是由于字母的有限,所有只能转换最多36进制,即0-9,a-z 思路是: 先将任意进制转换为10进制,再将10进制转换到任意进制 1、任意进制转换为10进制的转换 分别对整数和小数部分进行转换,再将分别转换后的结果进行拼合,利用相乘相加的原则 整数部分:(如111的二进制到十进制就是:1*pow(2,2)+1*pow(2,1)+1*pow(2,1)) 小数部分:利用相乘相加的原则 2、10进制转换到任意进制的转换 分别对整数和小数部分进行转换,再将分别转换后的结果进行拼合 整数部分:利用相除取余的原则 小数部分:利用相乘取整的原则 如:原数为0.9876,转换为二进制,即每次乘2(当然这个便没有举好,有错误,能理解就行了) 现数 余数 0.9752 1 0.9504 1 0.9008 1 0.8016 1 0.6032 1 0.2064 1 0.4128 0 */ import java.io.*; import java.util.*; public class JZZH { //*****************************任意进制到十进制的转换***************************** //任意进制到十进制的转换 String anySystemToTen(double longNum) throws Exception { String strNum = String.valueOf(longNum); //将取得的整数部份和小数部份的进制结合在一起,并将其还原为浮点数 //strNum=intToTenSystem(strInt,JZ)+"."+lessToTenSystem(strLess,JZ); return strNum; } //保证输入的数与进制相配 boolean checkInputNumIsOK(int Num, int JZ) { if (Num <= JZ - 1) return true; else return false; } //由取最得的字符返回相应的数字 String letterToInteger(String tChar) { int gotNum = 0; int kg = 0; //确定前面该字符是不是已经赋值,这就是使用if语句所留下的后症 String S; if (tChar.equals("A")) { gotNum = 10; kg = 1; } else if (tChar.equals("B")) { gotNum = 11; kg = 1; } else if (tChar.equals("C")) { gotNum = 12; kg = 1; } else if (tChar.equals("D")) { gotNum = 13; kg = 1; } else if (tChar.equals("E")) { gotNum = 14; kg = 1; } else if (tChar.equals("F")) { gotNum = 15; kg = 1; } else if (tChar.equals("G")) { gotNum = 16; kg = 1; } else if (tChar.equals("H")) { gotNum = 17; kg = 1; } else if (tChar.equals("I")) { gotNum = 18; kg = 1; } else if (tChar.equals("J")) { gotNum = 19; kg = 1; } else if (tChar.equals("K")) { gotNum = 20; kg = 1; } else if (tChar.equals("L")) { gotNum = 21; kg = 1; } else if (tChar.equals("M")) { gotNum = 22; kg = 1; } else if (tChar.equals("O")) { gotNum = 23; kg = 1; } else if (tChar.equals("P")) { gotNum = 24; kg = 1; } else if (tChar.equals("Q")) { gotNum = 25; kg = 1; } else if (tChar.equals("R")) { gotNum = 26; kg = 1; } else if (tChar.equals("S")) { gotNum = 27; kg = 1; } else if (tChar.equals("T")) { gotNum = 28; kg = 1; } else if (tChar.equals("U")) { gotNum = 29; kg = 1; } else if (tChar.equals("V")) { gotNum = 30; kg = 1; } else if (tChar.equals("W")) { gotNum = 31; kg = 1; } else if (tChar.equals("X")) { gotNum = 32; kg = 1; } else if (tChar.equals("Y")) { gotNum = 33; kg = 1; } else if (tChar.equals("Z")) { gotNum = 34; kg = 1; } else if (kg == 0) { gotNum = Integer.parseInt(tChar); } S = String.valueOf(gotNum); return S; } //浮点数的整数部份转换为十进制 String intToTenSystem(String strNum, int JZ) throws Exception { strNum = strNum.toUpperCase(); //全部转换为大写,方便字符到数字的转换 double longNum = 0; int len = strNum.length(); //取得字符串的长度 int tInt = 0; //初使化数组位置为0 int gotNum = 0; //一个一个字符取出所对应的数字 while (len > 0) { //如果没有将字符串的字符转换完,就继续 String tChar = strNum.substring(tInt, tInt + 1); //一个一个字符的取 gotNum = Integer.parseInt(letterToInteger(tChar)); if (!checkInputNumIsOK(gotNum, JZ)) { System.out.println("你的输入与转换的进制不符,请检查!"); System.exit(-1); } longNum = longNum + gotNum * (Math.pow(JZ, len - 1)); tInt++; len--; } return String.valueOf(longNum); } //浮点数小数部份转换为十进制 String lessToTenSystem(String strNum, int JZ) throws Exception { strNum = strNum.toUpperCase(); double longNum = 0; int len = strNum.length(); //取得字符的长度 int tInt = 0; //取第tInt个字符 int gotNum = 0; //取出的字符转换为数字 int cfInt = -1; //多少次次方 while (len > 0) { String tChar = strNum.substring(tInt, tInt + 1); //一个一个字符的取 gotNum = Integer.parseInt(letterToInteger(tChar)); if (!checkInputNumIsOK(gotNum, JZ)) { System.out.println("你的输入与转换的进制不符,请检查!"); System.exit(-1); } //保存出小数部份从对应的进制到十进制的总值 longNum = longNum + gotNum * (Math.pow(JZ, cfInt)); //关键算法 tInt++; //字符串中位置加一 len--; //字符串总长度减一 cfInt--; } return String.valueOf(longNum); } //返回一个浮点数的整数或者是小数部份 String returnWantPart(String doubleNum, String whichPart) throws Exception { String strNum = doubleNum; String leftStr; String rightStr; //如果输入的是一个浮点数 if (strNum.indexOf(".") != -1) { StringTokenizer fenxi = new StringTokenizer(strNum, "."); leftStr = fenxi.nextToken(); rightStr = fenxi.nextToken(); } else { //如果输入的是一个整数 leftStr = strNum; rightStr = "0"; } String returnStr = ""; if (whichPart.equals("left")) returnStr = leftStr; else if (whichPart.equals("right")) returnStr = rightStr; return returnStr; } //*****************************任意进制到十进制的转换***************************** //*****************************十进制到任意进制的转换***************************** String tenToAnySystem_Int(String strInt, int JZ) { //因为由任意进制到十进制的转换结果为"整数部分.小数部份" //也就是分成整数和小数部份分别转换 //此函数完成的功能是十进制的整数部分到任意进制的转换 try { //取出整数部份 strInt = returnWantPart(strInt, "left"); } catch (Exception e) { e.printStackTrace(); } long intStr = Long.parseLong(strInt); long[] result = new long[50]; //用50个数组来保存相除的余数 long T; String resultStr = ""; int i = 0; //数组的下标 while (intStr != 0) { result[i] = intStr % JZ; //取出余数 intStr = intStr - result[i]; //现数为减去余数的数 intStr = intStr / JZ; i++; //数组下标增加一 } //将数组全部反序排列,并返回结果 for (int j1 = 0, j2 = i - 1; j1 < (i / 2); j1++, j2--) { T = result[j1]; result[j1] = result[j2]; result[j2] = T; } for (int j = 0; j < i; j++) { resultStr = resultStr + intToLetter(result[j]); } return resultStr; } //此函数完成的功能是十进制的小数部分到任意进制的转换 String temToAnySystem_Less(String strLess, int JZ) { double T = 0; T = Double.parseDouble(strLess); String resultStr = ""; String strInt = ""; //精度取到小数点后面6位为止 int JinDu = 0; int i = 0; //数组下标 int[] result = new int[50]; for (int j = 0; j < 50; j++) //将数组初使化 result[j] = 0; try { while (JinDu <= 6 && T > 0.000001) { double tNum = 0; tNum = T * JZ; if (tNum > 1) { //取出整数部份 try { strInt = returnWantPart(String.valueOf(tNum), "left"); } catch (Exception e) { e.printStackTrace(); } result[i] = Integer.parseInt(strInt); T = tNum - result[i]; //将当前数减去取出来的数 } else { //如果整数小于零,那么整数部分就是0 result[i] = 0; } JinDu++; i++; } } catch (Exception e) { e.printStackTrace(); } for (int j = 0; j < i; j++) resultStr = resultStr + String.valueOf(result[j]); if (i == 0) return "0"; else return resultStr; } //将取得的数字转换为相应的字母 String intToLetter(long num) { String result = ""; String S = ""; if (0 <= num && num <= 9) result = String.valueOf(num); else if (num > 9) { S = String.valueOf(num); //将长整型转换为字符串型 switch (Integer.parseInt(S)) //将字符串型转换为整型 { case 10: result = "A"; break; case 11: result = "B"; break; case 12: result = "C"; break; case 13: result = "D"; break; case 14: result = "E"; break; case 15: result = "F"; break; case 16: result = "G"; break; case 17: result = "H"; break; case 18: result = "I"; break; case 19: result = "G"; break; case 20: result = "K"; break; case 21: result = "L"; break; case 22: result = "M"; break; case 23: result = "N"; break; case 24: result = "O"; break; case 25: result = "P"; break; case 26: result = "Q"; break; case 27: result = "R"; break; case 28: result = "S"; break; case 29: result = "T"; break; case 30: result = "U"; break; case 31: result = "V"; break; case 32: result = "W"; break; case 33: result = "X"; break; case 34: result = "Y"; break; case 35: result = "Z"; break; } } return result; } //*****************************十进制到任意进制的转换***************************** public static void main(String[] arg) throws Exception { try { JZZH jzzh = new JZZH(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String inData = " "; while (!inData.toUpperCase().equals("QUIT")) { System.out.print("请输入一个数(quit退出)(格式:原数,原数进制,要转换到的进制):"); inData = br.readLine(); if (inData.equals("") || inData.equals(" ")) continue; if (inData.toUpperCase().equals("QUIT")) break; StringTokenizer fenxi = new StringTokenizer(inData, ","); String tData = fenxi.nextToken(); //取出原数 //String whichPart= //System.out.println("The Result is :"+tData); int whichSystem = Integer.parseInt(fenxi.nextToken()); //取出原进制 int targetSystem = Integer.parseInt(fenxi.nextToken()); //取出要转换的进制 String returnLeftPart; //输入数的整数部分 String returnRightPart; //输入数的小数部分 //分别取出数的左面和右面 returnLeftPart = jzzh.returnWantPart(tData, "left"); //取出输入数的整数部分 returnRightPart = jzzh.returnWantPart(tData, "right"); //取出输入数的小数部分 String anyChangedToIntSystem; //用于接收输入数的整数部分转换后的结果 String anyChangedToLessSystem; //用于接收输入数的小数部分转换后的结果 anyChangedToIntSystem = jzzh.intToTenSystem(returnLeftPart, whichSystem); anyChangedToLessSystem = jzzh.lessToTenSystem(returnRightPart, whichSystem); double leftNum = Double.parseDouble(anyChangedToIntSystem); double rightNum = Double.parseDouble(anyChangedToLessSystem); double totalNum = leftNum + rightNum; //拼合结果 System.out.println(tData + "由" + whichSystem + "到10进制的结果是:" + jzzh.anySystemToTen(totalNum)); //十进制到任意进制的转换temToAnySystem_Less String tenChangedToAnySystemInt = ""; String tenChangedToAnySystemLess = ""; tenChangedToAnySystemInt = jzzh.tenToAnySystem_Int(anyChangedToIntSystem, targetSystem); tenChangedToAnySystemLess = jzzh.temToAnySystem_Less(anyChangedToLessSystem, targetSystem); System.out.println(tData + "由" + whichSystem + "到" + targetSystem + "进制的结果是:" + tenChangedToAnySystemInt + "." + tenChangedToAnySystemLess); } } catch (IOException e) { e.printStackTrace(); } } }
发表评论
-
Chrome 详细设置
2012-06-10 12:18 1669在 SwitchySharp 选项中,选择导入导出分页卡,导入 ... -
Firefox 同步 密钥
2012-04-08 19:18 1276您的 Firefox 同步 密钥 3-8czuq-484ae ... -
JXL简单操作
2009-08-14 10:02 2989package com.wangyu; impo ... -
读取Excel表格,拷贝、更新Excel工作薄
2009-08-13 20:16 2062public class VireObj { St ... -
去掉鼠标右键中的Nvidia控制面板
2009-07-22 15:41 1878在开始-运行中输入:(去掉方法) regsvr32 /u n ... -
X:\windows\system32\winload.exe出现错误
2009-07-20 21:16 11184我是联想天逸f31的机子,刚才一键恢复结果进不了VISTA,其 ... -
Microsoft Office Home and Student 2007产品密匙破解[ 2009-06-23 14:27:02 | 作者: 何加林 ]
2009-07-20 18:17 24628我的本本买时自带的Microsoft Office Home ... -
尚学堂OA系统中ACL的CRUD解释
2009-06-22 07:25 2993oa权限管理分为: 人员 ... -
三星P528 GPRS配置
2009-06-19 20:58 1389短信--设定--多媒体信息--多媒体信息设定--服务器设定-- ... -
Foxmail设置msn.hotmail
2009-05-31 07:08 2132hotmail,msn一般用户只能设置为http收信,需要被其 ... -
三星手机参数
2009-05-10 20:24 1315待机状态下输入*#9998*4678255#,然后进入其它文件 ... -
在Windows中查看端口占用情况的简单方法
2009-05-07 08:55 1217用这个命令,在DOS窗口执行:netstat -ano 看看占 ... -
Google眼睛代码
2009-04-10 13:26 3663google眼睛很好看,于是想弄下来填充一下自己的博客。 ... -
通过Spring JdbcTemplate调用Sybase带结果集的存储过程
2009-03-13 13:47 2516存储过程 IF OBJECT_ID('dbo.sp_xx' ... -
假如我是JAVA开发人员
2009-03-11 09:40 1199假如我是JAVA开发人员, ... -
Maven 2.0:编译、测试、部署、运行
2009-02-25 13:13 2467Maven是新一代的生力军,它的境遇正好和几年前的Ant十分类 ... -
svn 中文提示
2009-01-05 13:50 7643# # Simplified Chinese transla ... -
ubuntu美化教程和各色主题下载链接
2008-12-31 10:39 9380A美化教程(以ubu ... -
如何考察新市场
2008-10-20 16:46 2044由于各种各样的原因, ... -
给SOHO的22个经典提示
2008-10-17 16:58 1116提示一:性格本不同, ...
相关推荐
小小计算器相对于Windows自带的其优点在于二进制/八进制/十六进制之间可以任意多位数等价转换,而Windows自带的有位数的限制;里面的值得一提的是算法,不足之处是从十进制转换为其它进制时,最大数为10的15次方减1...
三、各种进制数的转换数制之间的转换是通过特定算法完成的。例如,将二进制转换为十进制,可以采用累加权值的方法;将十进制转换为二进制,通常使用除2取余法;八进制和十六进制转换至二进制或十进制,也可以通过...
例如,十进制数100转换为二进制是01100100,转换为八进制是144,转换为十六进制是64。 4. **计算机应用领域**:资料检索属于数据处理,这是计算机应用的一种,还包括科学计算、实时控制和人工智能等。 5. **编程...
2. 二进制 11101111 转换成十六进制数:77。 3. 十进制数 178.75 对应的二进制数:10110010.11。 4. 一个字节由 8 个二进制位形成。 5. 原码表示中,用 1 位表示正负号,一个字节能表示的最大有标记数:127。 6. ...
17. **十进制到二进制的转换**:十进制数58转换成二进制数是(111010),这一转换过程是正确的(正确答案:正确)。 ### 计算机硬件历史 18. **硬件巨头“蓝色巨人”**:“蓝色巨人”通常指的是IBM公司(选项A),它...
- 数制:包括十进制、二进制、十六进制、八进制等,它们之间可以相互转换 - 码制:用于表示字符,如ASCII码、Unicode码等 - 汉字编码:包括字形、字音、音形、数字编码等多种方案 6. **计算机中信息的单位** - ...
每个IP地址段由8位二进制组成,转换为十进制后范围是0到255。 17. 错误的IP地址表述:IP地址可以随便指定。IP地址必须唯一且遵守分配规则。 18. 子网掩码255.255.255.0允许的终端数量:254台。除去网络地址和广播...
2. **硬件配置与性能**:第十七题涉及计算机硬件配置与性能之间的关系。正确选项是**D.在微型计算机性能指标中,CPU的主频越高,其运算速度越快**。主频越高意味着CPU执行指令的速度越快。 ### 六、外存储设备与内...
- 不同进制之间的数值比较需要转换到同一进制下进行。 - 此题答案为(D),即十进制的1789最大。 #### 8. 启动DOS系统 - 实际上是将DOS系统加载到内存中,并使之处于运行状态。 #### 9. 内部命令 - 内部命令是DOS...
- 小数是十进制分数的另一种表达,方便计算和理解。 2. **小数的计数单位**: - 小数的计数单位包括十分之一(0.1)、百分之一(0.01)、千分之一(0.001)等,每个计数单位之间的进率是10。 3. **小数的读法和...
2. **ASCII码**: ASCII码是一种字符编码标准,用于将字符转换为数字,便于计算机处理。ASCII码表按照特定顺序排列,包括控制字符、数字符、大写英文字母和小写英文字母。 3. **指令系统**: 指令是计算机执行的基本...
在这个函数中,`maxWidth`和`maxHeight`定义了允许的最大尺寸,`quality`参数用于控制JPEG的压缩质量,范围通常在0.1到1之间,值越小质量越低,文件也越小。 在实际应用中,我们可能需要处理多个图片,这时可以使用...
1. 字节(Byte)是计算机存储的基本单位,通常一个字节包含8个二进制位(bits),即选项C正确。 2. 高级语言编写的源程序需要经过编译才能被计算机执行。编译程序(Compiler)将源代码转换为目标代码,而汇编程序...
三.如何得到Linux?.............................................................................................................3 四.如何得到Linux的最新消息?...........................................
三部分之间使用冒号“:”来进行分割。 用户名:就是登陆CVS的用户名 密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码 本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其 他...
BIN:二进制文件 BINHex:苹果的一种编码格式 BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音...
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 4.Rem 命令 注释...