自学篇-进制转换(一)
来源:互联网 发布:php幸运大转盘源码 编辑:程序博客网 时间:2024/04/28 07:47
计算机中只有0和1,而不同的0和1的排列组合表示数据,如字母,汉字等。
1 十进制 --->二进制 原理:对十进制数不断进行除2操作 例:6 的二进制数 除2得 3 余 0 3除2 得 1 余 1 1除2 得0余1 二进制数就是 余数 110
2 二进制 --> 十进制 原理: 2进制乘2的过程 例:110 1*2*2 + 1*2+0 得 6
3 十进制 --> 十六进制 原理:先转换成二进制 再转换为十六进制 例 6 --> 0000 0110 每4位 为一个十六进制位 --> 0x06
4 十进制 负数 -->二进制数 原理 十进制负数的绝对值 转换为二进制 取反 加1 例 -6 的二进制值为 6 -->二进制 0000 0000 0000 0110 取反 1111 1111 1111 1001
加1 为 1111 1111 1111 1010
我们知道原理后就来实践一下:
试题:
编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。
提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的 商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。
答:用JAVA实现
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Test {
/**
* 它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。
* @param args
*/
public static void main(String[] args) {
int shang = 0, yu;
boolean flag = false;
System.out.println("请输入一个数字(最大值为<" + Integer.MAX_VALUE + ")");
InputStream inputStream = System.in;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
try {
String str = reader.readLine();
char[] ch = new char[str.length()];
str.getChars(0, ch.length, ch, 0);
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(ch[i])) {
System.out.println("有非数字字符");
System.exit(0);
}
}
try {
shang = Integer.parseInt(str);
flag = true;
} catch (Exception ex) {
ex.printStackTrace();
}
//不断用二除,直到除不开,再把余数倒置
StringBuffer sb = new StringBuffer();
if (flag) {
while (shang != 0) {
yu = shang % 2;
shang = shang / 2;
sb.append(yu);
}
}
System.out.println(sb.reverse());
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 自学篇-进制转换(一)
- MySQL自学篇(一)
- postgreSQL自学篇一
- oracle自学(一)
- 自学ECharts(一)
- 自学Swift(一)
- vbs自学(一)
- HTML5 自学 (一)
- 自学测度论(一)
- UNITY3D自学--(一)
- ActiveMq 自学(一)
- 自学git(一)
- JAVA自学(一)
- 进制转换(一)
- 进制转换(一)
- ajax自学笔记(一)
- Java自学日记(一)
- android自学笔记(一)
- 冒泡排序,选择排序,插入排序
- ORA-27102:out of memeory 故障处理一例
- php导出Excel
- 批处理注册动态链接库文件(**.dll)
- 301 Redirect 资源永久重定向的实现方法
- 自学篇-进制转换(一)
- POJ 1200 Crazy Search hash水题
- 递归
- 【ORACLE】oracle9i/10g/11g各种下载
- mssql 数据库还原
- 获取每一帧的长度
- shell排序 类似于插入排序
- Linux Shell中判断某个环境变量是否存在以及获取某个环境变量的值
- mysql 命令