花了1个多小时写的,有一定的实用性和健壮性,挺有成就感的。
理由:
1. 生成对照表,省去十进制转码时间,输出结果导入数据库后,可供快速查询
2.经过在Windows 8自带计算器的programmer mode中的对比测试,转换结果是正确无误的
3.十进制转其他进制,使用了一套逻辑,一个方法,简单、可靠
4.增加了时间戳,程序运行结束时,会显示用时。调试程序时输入较大的数字时,输出对照表需要较长时间,可用此程序对比测试不同计算机的运算速度。
PS:刚好买了新的游戏本,回家测测看。
代码如下:
package example;
//JHTP Exercise 6.34: Table of Binary, Octal and Hexadecimal Numbers
//by pandenghuang@163.com
/**(Table of Binary, Octal and Hexadecimal Numbers) Write an application that displays a
table of the binary, octal and hexadecimal equivalents of the decimal numbers in the range 1
through 256. If you aren’t familiar with these number systems, read online Appendix J first.*/
import java.util.Scanner;
import java.util.Date;
public class NumberConversion
{
public static String convert(int number,int system){
//10->10/2=5,10%2=0->5/2=2,5%2=1->2/2=1,2%2=0->1010
//2->2/2=1,2%2=0
String result="";
boolean flag=true;
int left=0;
do{
switch (number%system){
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8: case 9:
result+=number%system;
break;
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;
}
left=number/system;
if (left>1)
number=left;
else if(left==1){
result+=1;
flag=false;
break;
}
else if(left==0){
break;
}
}
while(flag);
return result;
}
public static void toHex(int number){
}
public static void main(String[] args)
{
int size=0;
String converted="";
long beginTime=0;
long endTime=0;
double duration=0.0; //分钟
Scanner input=new Scanner(System.in);
do {
System.out.print("请输入数据上限(十进制整数,输入-1退出):");
size=input.nextInt();
if(size==-1)
System.out.print("已退出程序");
else
{
beginTime=new Date().getTime();
System.out.print("十进制\t二进制\t八进制\t十六进制\t\n");
for(int i=1;i<=size;i++){
//输出十进制数字
System.out.print(i+"\t");
//输出二进制数字
converted=convert(i,2);
for (int j=converted.length()-1;j>=0;j--)
System.out.print(converted.charAt(j));
System.out.print("\t");
//输出八进制数字
converted=convert(i,8);
for (int j=converted.length()-1;j>=0;j--)
System.out.print(converted.charAt(j));
System.out.print("\t");
//输出十六进制数字
converted=convert(i,16);
for (int j=converted.length()-1;j>=0;j--)
System.out.print(converted.charAt(j));
System.out.print("\t");
System.out.println();
}
System.out.println();
endTime=new Date().getTime();
duration=(double)(endTime-beginTime)/1000/60;
System.out.printf("共用时%.2f分钟\n",duration);
}
}
while (size!=-1);
}
}
运行结果:
请输入数据上限(十进制整数,输入-1退出):256 十进制 二进制 八进制 十六进制 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14 21 10101 25 15 22 10110 26 16 23 10111 27 17 24 11000 30 18 25 11001 31 19 26 11010 32 1A 27 11011 33 1B 28 11100 34 1C 29 11101 35 1D 30 11110 36 1E 31 11111 37 1F 32 100000 40 20 33 100001 41 21 34 100010 42 22 35 100011 43 23 36 100100 44 24 37 100101 45 25 38 100110 46 26 39 100111 47 27 40 101000 50 28 41 101001 51 29 42 101010 52 2A 43 101011 53 2B 44 101100 54 2C 45 101101 55 2D 46 101110 56 2E 47 101111 57 2F 48 110000 60 30 49 110001 61 31 50 110010 62 32 51 110011 63 33 52 110100 64 34 53 110101 65 35 54 110110 66 36 55 110111 67 37 56 111000 70 38 57 111001 71 39 58 111010 72 3A 59 111011 73 3B 60 111100 74 3C 61 111101 75 3D 62 111110 76 3E 63 111111 77 3F 64 1000000 100 40 65 1000001 101 41 66 1000010 102 42 67 1000011 103 43 68 1000100 104 44 69 1000101 105 45 70 1000110 106 46 71 1000111 107 47 72 1001000 110 48 73 1001001 111 49 74 1001010 112 4A 75 1001011 113 4B 76 1001100 114 4C 77 1001101 115 4D 78 1001110 116 4E 79 1001111 117 4F 80 1010000 120 50 81 1010001 121 51 82 1010010 122 52 83 1010011 123 53 84 1010100 124 54 85 1010101 125 55 86 1010110 126 56 87 1010111 127 57 88 1011000 130 58 89 1011001 131 59 90 1011010 132 5A 91 1011011 133 5B 92 1011100 134 5C 93 1011101 135 5D 94 1011110 136 5E 95 1011111 137 5F 96 1100000 140 60 97 1100001 141 61 98 1100010 142 62 99 1100011 143 63 100 1100100 144 64 101 1100101 145 65 102 1100110 146 66 103 1100111 147 67 104 1101000 150 68 105 1101001 151 69 106 1101010 152 6A 107 1101011 153 6B 108 1101100 154 6C 109 1101101 155 6D 110 1101110 156 6E 111 1101111 157 6F 112 1110000 160 70 113 1110001 161 71 114 1110010 162 72 115 1110011 163 73 116 1110100 164 74 117 1110101 165 75 118 1110110 166 76 119 1110111 167 77 120 1111000 170 78 121 1111001 171 79 122 1111010 172 7A 123 1111011 173 7B 124 1111100 174 7C 125 1111101 175 7D 126 1111110 176 7E 127 1111111 177 7F 128 10000000 200 80 129 10000001 201 81 130 10000010 202 82 131 10000011 203 83 132 10000100 204 84 133 10000101 205 85 134 10000110 206 86 135 10000111 207 87 136 10001000 210 88 137 10001001 211 89 138 10001010 212 8A 139 10001011 213 8B 140 10001100 214 8C 141 10001101 215 8D 142 10001110 216 8E 143 10001111 217 8F 144 10010000 220 90 145 10010001 221 91 146 10010010 222 92 147 10010011 223 93 148 10010100 224 94 149 10010101 225 95 150 10010110 226 96 151 10010111 227 97 152 10011000 230 98 153 10011001 231 99 154 10011010 232 9A 155 10011011 233 9B 156 10011100 234 9C 157 10011101 235 9D 158 10011110 236 9E 159 10011111 237 9F 160 10100000 240 A0 161 10100001 241 A1 162 10100010 242 A2 163 10100011 243 A3 164 10100100 244 A4 165 10100101 245 A5 166 10100110 246 A6 167 10100111 247 A7 168 10101000 250 A8 169 10101001 251 A9 170 10101010 252 AA 171 10101011 253 AB 172 10101100 254 AC 173 10101101 255 AD 174 10101110 256 AE 175 10101111 257 AF 176 10110000 260 B0 177 10110001 261 B1 178 10110010 262 B2 179 10110011 263 B3 180 10110100 264 B4 181 10110101 265 B5 182 10110110 266 B6 183 10110111 267 B7 184 10111000 270 B8 185 10111001 271 B9 186 10111010 272 BA 187 10111011 273 BB 188 10111100 274 BC 189 10111101 275 BD 190 10111110 276 BE 191 10111111 277 BF 192 11000000 300 C0 193 11000001 301 C1 194 11000010 302 C2 195 11000011 303 C3 196 11000100 304 C4 197 11000101 305 C5 198 11000110 306 C6 199 11000111 307 C7 200 11001000 310 C8 201 11001001 311 C9 202 11001010 312 CA 203 11001011 313 CB 204 11001100 314 CC 205 11001101 315 CD 206 11001110 316 CE 207 11001111 317 CF 208 11010000 320 D0 209 11010001 321 D1 210 11010010 322 D2 211 11010011 323 D3 212 11010100 324 D4 213 11010101 325 D5 214 11010110 326 D6 215 11010111 327 D7 216 11011000 330 D8 217 11011001 331 D9 218 11011010 332 DA 219 11011011 333 DB 220 11011100 334 DC 221 11011101 335 DD 222 11011110 336 DE 223 11011111 337 DF 224 11100000 340 E0 225 11100001 341 E1 226 11100010 342 E2 227 11100011 343 E3 228 11100100 344 E4 229 11100101 345 E5 230 11100110 346 E6 231 11100111 347 E7 232 11101000 350 E8 233 11101001 351 E9 234 11101010 352 EA 235 11101011 353 EB 236 11101100 354 EC 237 11101101 355 ED 238 11101110 356 EE 239 11101111 357 EF 240 11110000 360 F0 241 11110001 361 F1 242 11110010 362 F2 243 11110011 363 F3 244 11110100 364 F4 245 11110101 365 F5 246 11110110 366 F6 247 11110111 367 F7 248 11111000 370 F8 249 11111001 371 F9 250 11111010 372 FA 251 11111011 373 FB 252 11111100 374 FC 253 11111101 375 FD 254 11111110 376 FE 255 11111111 377 FF 256 100000000 400 100
共用时0.00分钟 |