一、二进制数转换成十进制数
由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。
二、十进制数转换为二进制数
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
下面是简单的代码
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigInteger;
import javax.swing.*;
public class DecimalToBin extends JFrame implements ActionListener {
JPanel panel = new JPanel();
JLabel l1 = new JLabel("请输入十进制数");
JTextField t1 = new JTextField(20);
JButton but = new JButton("转换为二进制");
JTextField t2 = new JTextField(20);
public DecimalToBin() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
// setLayout(new FlowLayout());
panel.add(l1);
panel.add(t1);
panel.add(but);
panel.add(t2);
add(BorderLayout.CENTER, panel);
but.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String str1;
str1 = t1.getText();
// int
double a = 0;
try {
a = Double.parseDouble(str1);
} catch (Exception v) {
t2.setText("Data Error! Please input one number.");
return;
}
if (a == (int) a) {
int b = (int) a;
if (b >= 0) {
BigInteger src = new BigInteger(Integer.toString(b));
// int tep=src;
// System.out.println(src + "hello");
// t2.setText(src.toString(2));
t2.setText("0" + Integer.toString(b, 2));
} else {
int c = -b;
String temp = Integer.toString(b, 2);
char[] charArray = temp.toCharArray();
for (int i = 0; i < charArray.length; i++) {
if (charArray[i] == '1')
charArray[i] = '0';
else
charArray[i] = '1';
}
int last = charArray.length - 1;
for (int i = 0; i < charArray.length; i++) {
if (charArray[last] == '0') {
charArray[last] = '1';
break;
} else {
charArray[last] = '0';
last--;
}
}
t2.setText(new String(charArray));
}
} else {
int b = (int) a;
// BigInteger src = new BigInteger(Integer.toString(b));
String result = Integer.toString(b, 2);
double c;
c = a - b;
result = result + ".";
for (int i = 0; i <= 10; i++) {
if (2 * c >= 1) {
c = 2 * c - 1;
result = result + "1";
} else {
result = result + "0";
c = 2 * c;
}
}
t2.setText(result);
}
}
public static void main(String args[]) {
DecimalToBin mainFrame = new DecimalToBin();
mainFrame.setSize(400, 200);
mainFrame.setTitle("十进制数转换为二进制数");
mainFrame.setVisible(true);
}
}
分享到:
相关推荐
在编程语言中,如Python、Java、C++等,都有内置的函数或者库来支持浮点数和十进制数之间的转换,例如Python的`float()`和`int()`函数,Java的`Float.parseFloat()`和`Integer.parseInt()`方法。理解这些转换机制...
这种转换在处理计算机中的二进制、八进制、十六进制转换时尤其有用,因为它们是计算机常用的基础进制。 总的来说,理解和掌握将十进制数转换为任意进制的算法对于程序员来说至关重要,尤其是在进行位运算、数据编码...
在Java编程语言中,将十进制数转换为二进制、八进制或十六进制是常见的数据处理任务,尤其是在计算机科学与信息技术领域。本文将深入探讨如何使用Java实现这些转换,包括算法原理和具体代码实现。 ### 十进制转二...
刚学Java,老师让座一个实数进制转换的程序,分享出来以供互相学习。
输入一个整十进制数n,把它转化为二进制,小数部分还没有考虑。。。
本代码信息: 使用语言:java 功能:将整数(包括正负整数)转换成对应的二进制数,然后再控制台上显示。
本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...
- **十进制转十六进制**:先将十进制数转换为二进制,然后每4位二进制转换为一位十六进制数。 - **十六进制转十进制**:与十进制转二进制类似,先将十六进制数转换为二进制,再转为十进制。 - **十六进制转二进制...
对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。java代码实现源码。
### Java十进制转换二进制 在计算机科学领域,数据表示和转换是十分重要的基础知识之一。本篇文章将深入解析一个使用Java语言编写的程序,该程序能够将十进制正数和负数转换为二进制形式。通过分析代码逻辑、算法...
正整数的十进制转换二进制 将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取除得的余数,即换算为二进制数的结果。只需记住要点:除二取余,倒序排列。 由于计算机内部表示数的字节...
在编程中,许多语言都内置了将十进制转换为二进制的函数。例如,在Python中,可以使用`bin()`函数: ```python decimal_number = 25 binary_string = bin(decimal_number)[2:] # [2:] 是为了去掉前缀'0b' print...
本代码用JAVA语言编写,实现了十进制,二进制,十六进制和八进制的转换
下面通过Java代码来具体实现一种通用的进制转换算法: ```java public class Conversion { // 实现任意进制之间的转换 public static String convert(int fromBase, int toBase, String input) { Stack<Integer>...
Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制字符数组或字符串的方法,以及将字符串...
**二、Java中的八进制和十进制转换** 在Java中,我们可以使用`Integer.parseInt()`或者`Long.parseLong()`方法将字符串形式的八进制数转换为对应的十进制整数,这两个方法都接受两个参数:待转换的字符串和基数...
我们可以先将十进制数转换为二进制,然后每四位(因为16=2^4)为一组,从低位到高位,将二进制转换为对应的十六进制数。如果二进制位不足四位,前面可以补零。 例如,我们有一个十进制数345,转换过程如下: - 345...
本项目"java-binary-calculator"是一个实用的计算器应用,它专注于帮助用户将十进制小数转换成二进制数,以及将二进制数转换回十进制数。 一、二进制与十进制概述 二进制系统是基于2的计数系统,只包含数字0和1。在...
根据给定的信息,本文将详细解释如何在Java中开发一个简单的程序来实现十进制数向二进制、八进制以及十六进制的转换。 ### Java程序实现十进制转二进制、八进制、十六进制 #### 程序概述 此Java程序的主要功能是...
十进制转二进制java实现 标题解释 十进制转二进制是指将十进制数转换为二进制数的过程。在计算机科学中,二进制是计算机处理信息的基本单位,因此将十进制数转换为二进制数是非常重要的。本文档将介绍使用Java实现...