题目
016如何转换成二进制数
提问时间:2020-10-09
答案
/*
00开始为二进制、0x或0X开始的为十六进制、0开始为八进制、正常的为十进制 其中0为数字零
*/
public class To {
/**
* 将给定的一个进制数 转换成其它三种进制数
* 如:给定一个十进制数 转换成二进制数、八进制数和十六进制数
* 而:给定一个二进制数 转换成八进制数、十进制数和十六进制数
*/
private static String error = null;
private static char[] a = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
/**
* 给定一个数 将其转换
*/
public static void main(String[] args) {
String number = "016";
int to10 = to10(number);
System.out.println(number + "二进制: " + toNumber(to10, 2));
System.out.println(number + "八进制: " + toNumber(to10, 8));
System.out.println(number + "十进制: " + toNumber(to10, 10));
System.out.println(number + "十六进制: " + toNumber(to10, 16));
}
public static String toNumber(int number, int n) {
String str = "";
for (int i = 0; i < n; i++) {
if (number == i) {
str = a[i] + str;
return str;
}
}
str = a[number % n] + str;
str = toNumber(number / n, n) + str;
return str;
}
/**
* 将给定的数 转换成十进制数
*/
public static int to10(String str) {
int number = 0;
int status = 10;
if (str.charAt(0) == '0') {
if (str.charAt(1) == 'x' || str.charAt(1) == 'X') {
status = 16;
str = str.substring(2);
} else if (str.charAt(1) == '0') {
status = 2;
str = str.substring(2);
} else {
status = 8;
str = str.substring(1);
}
}
number = stringToInt(str, status);
return number;
}
public static int stringToInt(String str, int status) {
int number = 0;
int k = 0;
int s = 1;
int leng = str.length() - 1;
for (int i = str.length() - 1; i >= 0; i--) {
if (error != null) {
break;
}
if(k > 0) {
s *= status;
}
System.out.println(s);
switch (str.charAt(i)) {
case '0':
number = number + 0 * s;
k++;
break;
case '1':
number = number + 1 * s;
k++;
break;
case '2':
if (2 >= status) {
error = "数据出错!";
break;
}
number = number + 2 * s;
k++;
break;
case '3':
if (3 >= status) {
error = "数据出错!";
break;
}
number = number + 3 * s;
k++;
break;
case '4':
if(4 >= status) {
error = "数据出错!";
break;
}
number = number + 4 * s;
k++;
break;
case '5':
if(5 >= status) {
error = "数据出错!";
break;
}
number = number + 5 * s;
k++;
break;
case '6':
if(6 >= status) {
error = "数据出错!";
break;
}
number = number + 6 * s;
k++;
break;
case '7':
if(7 >= status) {
error = "数据出错!";
break;
}
number = number + 7 * s;
k++;
break;
case '8':
if(8 >= status) {
error = "数据出错!";
break;
}
number = number + 8 * s;
k++;
break;
case '9':
if(9 >= status) {
error = "数据出错!";
break;
}
number = number + 9 * s;
k++;
break;
case 'A':
if(10 >= status) {
error = "数据出错!";
break;
}
number = number + 10 * s;
k++;
break;
case 'B':
if(11 >= status) {
error = "数据出错!";
break;
}
number = number + 11 * s;
k++;
break;
case 'C':
if(12 >= status) {
error = "数据出错!";
break;
}
number = number + 12 * s;
k++;
break;
case 'D':
if(13 >= status) {
error = "数据出错!";
break;
}
number = number + 13 * s;
k++;
break;
case 'E':
if(14 >= status) {
error = "数据出错!";
break;
}
number = number + 14 * s;
k++;
break;
case 'F':
if(15 >= status) {
error = "数据出错!";
break;
}
number = number + 15 * s;
k++;
break;
default:
error = "数据出错!";
break;
}
}
if(error != null) {
System.out.println(error);
}
return number;
}
}
00开始为二进制、0x或0X开始的为十六进制、0开始为八进制、正常的为十进制 其中0为数字零
*/
public class To {
/**
* 将给定的一个进制数 转换成其它三种进制数
* 如:给定一个十进制数 转换成二进制数、八进制数和十六进制数
* 而:给定一个二进制数 转换成八进制数、十进制数和十六进制数
*/
private static String error = null;
private static char[] a = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
/**
* 给定一个数 将其转换
*/
public static void main(String[] args) {
String number = "016";
int to10 = to10(number);
System.out.println(number + "二进制: " + toNumber(to10, 2));
System.out.println(number + "八进制: " + toNumber(to10, 8));
System.out.println(number + "十进制: " + toNumber(to10, 10));
System.out.println(number + "十六进制: " + toNumber(to10, 16));
}
public static String toNumber(int number, int n) {
String str = "";
for (int i = 0; i < n; i++) {
if (number == i) {
str = a[i] + str;
return str;
}
}
str = a[number % n] + str;
str = toNumber(number / n, n) + str;
return str;
}
/**
* 将给定的数 转换成十进制数
*/
public static int to10(String str) {
int number = 0;
int status = 10;
if (str.charAt(0) == '0') {
if (str.charAt(1) == 'x' || str.charAt(1) == 'X') {
status = 16;
str = str.substring(2);
} else if (str.charAt(1) == '0') {
status = 2;
str = str.substring(2);
} else {
status = 8;
str = str.substring(1);
}
}
number = stringToInt(str, status);
return number;
}
public static int stringToInt(String str, int status) {
int number = 0;
int k = 0;
int s = 1;
int leng = str.length() - 1;
for (int i = str.length() - 1; i >= 0; i--) {
if (error != null) {
break;
}
if(k > 0) {
s *= status;
}
System.out.println(s);
switch (str.charAt(i)) {
case '0':
number = number + 0 * s;
k++;
break;
case '1':
number = number + 1 * s;
k++;
break;
case '2':
if (2 >= status) {
error = "数据出错!";
break;
}
number = number + 2 * s;
k++;
break;
case '3':
if (3 >= status) {
error = "数据出错!";
break;
}
number = number + 3 * s;
k++;
break;
case '4':
if(4 >= status) {
error = "数据出错!";
break;
}
number = number + 4 * s;
k++;
break;
case '5':
if(5 >= status) {
error = "数据出错!";
break;
}
number = number + 5 * s;
k++;
break;
case '6':
if(6 >= status) {
error = "数据出错!";
break;
}
number = number + 6 * s;
k++;
break;
case '7':
if(7 >= status) {
error = "数据出错!";
break;
}
number = number + 7 * s;
k++;
break;
case '8':
if(8 >= status) {
error = "数据出错!";
break;
}
number = number + 8 * s;
k++;
break;
case '9':
if(9 >= status) {
error = "数据出错!";
break;
}
number = number + 9 * s;
k++;
break;
case 'A':
if(10 >= status) {
error = "数据出错!";
break;
}
number = number + 10 * s;
k++;
break;
case 'B':
if(11 >= status) {
error = "数据出错!";
break;
}
number = number + 11 * s;
k++;
break;
case 'C':
if(12 >= status) {
error = "数据出错!";
break;
}
number = number + 12 * s;
k++;
break;
case 'D':
if(13 >= status) {
error = "数据出错!";
break;
}
number = number + 13 * s;
k++;
break;
case 'E':
if(14 >= status) {
error = "数据出错!";
break;
}
number = number + 14 * s;
k++;
break;
case 'F':
if(15 >= status) {
error = "数据出错!";
break;
}
number = number + 15 * s;
k++;
break;
default:
error = "数据出错!";
break;
}
}
if(error != null) {
System.out.println(error);
}
return number;
}
}
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
- 1冬天倒开水时,容易爆破的杯子是:A 薄的玻璃杯 B 厚的玻璃杯
- 2一个班有男生25人,女生20人,男生比女生多_%,女生比男生少_%.
- 3我仍是不灰心的每天叠着,总希望有一只能流到我要它到的地方去.诗人要纸船到什么地方去?
- 4please dry your wet clothes in the sun
- 5一篇关于马航失联作文
- 6Father asked Sandy where she decided __
- 713分之( )除以4等于( )分之5 9分之5除以4分之( )等于27分之( ) )等于( )分之3
- 8The weather is different in different parts of the word.In some piaces it is()
- 9AB与圆O相切于点C,OA=OB,圆O的直径为4,AB=8
- 10我们的友谊是永恒的,怎么翻译成英语
热门考点
- 1心血,心腹,心肝,心脏比喻什么
- 2中国历史上的九州指什么,四海是哪四海,五洲又是哪五洲?
- 3甲、乙、丙三个梯形的高的比为1:2:3,上底的比为6:9:4,下底的比为12:18:8.现已知道甲的面积为30,则乙和丙的面积之和是_.
- 4线面垂直关系
- 5用棱长为1厘米的小正方体拼成棱长为1米的大立方体,需要多少块小正方体?
- 6旅游文化节的开展能带来哪些社会效益和经济效益
- 7电势差与电场强度的关系
- 8求接近开关与电磁阀的接线图?
- 9不可知论属于唯物主义还是唯心主义的呢..
- 10they decide __in the mountain A.hiking B.on hike C.to hike D.not hiking