二进制、八进制、十进制、十六进制如何互相转换?谁有教程啊

本人现在正自学java,对二进制、八进制、十进制、十六进制如何互相转换? 的问题一窍不 通,请问谁有好的教学视频吗?摆脱了。。。
我想要的是视频。。文字描述的暂时不需要。。谢谢大家了

在计算机中数值是用二进制表示的,之所以要用八进制和十六进制,是因为它们与二进制之间的互相转换很方便,而且它们比长长的一串二进制数要方便书写和记忆。要把二进制转换为八进制,需要用一张表,如下:
二进制 八进制
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
有了这张表,就可以方便的把二进制数转换成八进制数。
首先,将一个二进制数自右向左每三位分成一段。
然后,将每一段用表中的八进制数替换,即可
例如:100101010
把它分成100 101 010
查表:100->4 101->5 010->2
替换:452
完成
将二进制转换成十六进制也要用到表
二进制 十六进制
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
转换方法与八进制类似,只是要将二进制数每四位分成一段
十进制与二进制的转换则比较麻烦
十进制->二进制:
用短除法将数字连续除以二,将余数由下向上排列起来,即可
二进制->十进制:
将每一位数字乘以2的(位数减一)次方,然后加起来即可
如100110:1*pow(2,5)+1*pow(2,2)+1*pow(2,1)=38
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-16
//这是我以前写的。。你看下吧。。
其他进制转换成10进制很简单。
//--------------------------------
例如 2进制转换为10进制 110
第一位数 0*1 第二位数1*2 第三位数1*4
0+2+4=6;
//---------------------------------
例如 8进制转换为10进制 776
第一位数 6*1 第二位数7*8 第三位数7*64
6+56+448=510
//---------------------------------
例如 16进制转换为10进制 776
第一位数 6*1 第二位数7*16 第三位数7*256
6+112+1792=1910

思路是这样的。。。。

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class 进制转换 extends JFrame implements ActionListener, ItemListener {
JComboBox a;

JTextField zhuanhuan, xianshi;

JButton anniu;

Container container = getContentPane();

int zz = 0;

public 进制转换() {
container.setLayout(new FlowLayout());
a = new JComboBox();
a.addItem("10进制转换为2进制");
a.addItem("10进制转换为8进制");
a.addItem("10进制转换为16进制");
a.addItem("2进制转换为8进制");
a.addItem("2进制转换为10进制");
a.addItem("2进制转换为16进制");
a.addItem("8进制转换为2进制");
a.addItem("8进制转换为10进制");
a.addItem("8进制转换为16进制");
a.addItem("16进制转换为2进制");
a.addItem("16进制转换为8进制");
a.addItem("16进制转换为10进制");
container.add(a);
zhuanhuan = new JTextField(10);
container.add(zhuanhuan);
xianshi = new JTextField(15);
xianshi.setEditable(false);
container.add(xianshi);
anniu = new JButton("转换");
container.add(anniu);
anniu.addActionListener(this);
a.addItemListener(this);
setSize(190, 150);
setVisible(true);
}

public static void main(String[] arge) {
进制转换 s = new 进制转换();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
if (a.getSelectedItem().equals("10进制转换为2进制"))
zz = 1;
if (a.getSelectedItem().equals("10进制转换为8进制"))
zz = 2;
if (a.getSelectedItem().equals("10进制转换为16进制"))
zz = 3;
if (a.getSelectedItem().equals("2进制转换为8进制"))
zz = 4;
if (a.getSelectedItem().equals("2进制转换为10进制"))
zz = 5;
if (a.getSelectedItem().equals("2进制转换为16进制"))
zz = 6;
if (a.getSelectedItem().equals("8进制转换为2进制"))
zz = 7;
if (a.getSelectedItem().equals("8进制转换为10进制"))
zz = 8;
if (a.getSelectedItem().equals("8进制转换为16进制"))
zz = 9;
if (a.getSelectedItem().equals("16进制转换为2进制"))
zz = 10;
if (a.getSelectedItem().equals("16进制转换为8进制"))
zz = 11;
if (a.getSelectedItem().equals("16进制转换为10进制"))
zz = 12;
}
}

public void actionPerformed(ActionEvent e) {

try{
if (zz == 1||zz == 0)
xianshi.setText(Integer.toBinaryString(Integer.parseInt(zhuanhuan.getText())));
else if (zz == 2)
xianshi.setText(Integer.toOctalString(Integer.parseInt(zhuanhuan
.getText())));
else if (zz == 3)
xianshi.setText(Integer.toHexString(Integer.parseInt(zhuanhuan
.getText())));
}
catch(NumberFormatException nu)
{
JOptionPane.showMessageDialog(null, "你输入非数字");
}
if (zz == 4) {
int a = j1(zhuanhuan.getText(), "[0-1]+", 2);
xianshi.setText(Integer.toOctalString(a));
} else if (zz == 5) {
j1(zhuanhuan.getText(), "[0-1]+", 2);

} else if (zz == 6) {
int a = j1(zhuanhuan.getText(), "[0-1]+", 2);
xianshi.setText(Integer.toHexString(a));
} else if (zz == 7) {
int a = j1(zhuanhuan.getText(), "[0-7]+", 8);
xianshi.setText(Integer.toBinaryString(a));
} else if (zz == 8) {
j1(zhuanhuan.getText(), "[0-7]+", 8);
} else if (zz == 9) {
int a = j1(zhuanhuan.getText(), "[0-7]+", 8);
xianshi.setText(Integer.toHexString(a));
} else if (zz == 10) {
int a = j1(zhuanhuan.getText(), "[0-9,a,b,c,d,e,f]+", 16);
xianshi.setText(Integer.toBinaryString(a));
} else if (zz == 11) {
int a = j1(zhuanhuan.getText(), "[0-9,a,b,c,d,e,f]+", 16);
xianshi.setText(Integer.toOctalString(a));
} else if (zz == 12) {
j1(zhuanhuan.getText(), "[0-9,a,b,c,d,e,f]+", 16);
}
}

public int j1(String zhuanhuan, String a1, int a3) {
if (zhuanhuan.matches(a1)) {
int bb, gg = 0, cc = 1;
String s = zhuanhuan;
StringBuffer ss = new StringBuffer(s);
ss.reverse();
for (int i = 0; i < ss.length(); i++) {
String jj = ss.charAt(i) + "";
if(a3==16){
if (jj.equals("a"))
jj = "10";
if (jj.equals("b"))
jj = "11";
if (jj.equals("c"))
jj = "12";
if (jj.equals("d"))
jj = "13";
if (jj.equals("e"))
jj = "14";
if (jj.equals("f"))
jj = "15";
}
bb = Integer.parseInt(jj);
if (i == 0)
gg += bb * cc;
else
gg += bb * (cc *= a3);
}
xianshi.setText(gg + "");
return gg;
}
else{
JOptionPane.showMessageDialog(null, "请检查输入数字是不是符合要求");
}
return 0;
}
}
第2个回答  2008-12-15
用十进制的转化成其他进制的很简单,只要用这个十进制数除以它,得到余数,每除一次得到一个余数,直到不够除,把余数从下到上排列得到的就是所求,比如十进制125转化成二进制,就用125除以2,依次得62余1,62除以2,得31余0,31除以2,得15余1,15除以2,得7余1,7除以2,得3余1,3除以2,得1余1,1不够除,就写在后面.反排成一列数.得二进制111101.其他进制类似算.至于其他进制转换比较复杂,鉴于楼主很抠不给分,所以也不便详细描述,描述也不一定看的懂```小算一下拿两分闪人.````
第3个回答  2008-12-15
java中自带有将十进制转化成二进制、八进制、十六进制的方法:
toBinaryString()将十进制转换成二进制
toHexString()将十进制转换成十六进制
toOctalString()将十进制转换成八进制

下面是自己写的一个将二进制转换成十进制的代码,你可以看看,自己摸索摸索
import javax.swing.JOptionPane;

public class binaryswitch
{
public static void main(String[] args)
{

String input = JOptionPane.showInputDialog("Please enter a binary number:");
char[] num_c = new char[input.length()];

for (int i=0; i<input.length(); i++)
{
num_c[i] = input.charAt(i);
if((num_c[i]!='1')&&(num_c[i]!='0'))
{
JOptionPane.showMessageDialog(null,"Your input is wrong!",
"Format Check",JOptionPane.INFORMATION_MESSAGE);
return;
}
}
System.out.println("OK");

double sum=0;
int[] num_i = new int[input.length()];

for (int i=0; i<input.length(); i++)
{
num_i[i]=input.charAt(i)-48;
sum += num_i[i] * (Math.pow(2,((input.length()-1)-i)));
}
System.out.println(sum);
System.exit(0);
}
}

视频你可以看看孙鑫的:www.sunxin.org
第4个回答  2008-12-16
C语言可以直接转的,没有,可以直接用的
你用C语言做一个函数给Java用就可以了

这在C语言里一句话的事

这是数学问题,和程序类型无关 C最简单本回答被提问者采纳

二进制、八进制、十进制、十六进制如何互相转换?谁有教程啊_百度...
首先,将一个二进制数自右向左每三位分成一段。然后,将每一段用表中的八进制数替换,即可 例如:100101010 把它分成100 101 010 查表:100->4 101->5 010->2 替换:452 完成 将二进制转换成十六进制也要用到表 二进制 十六进制 0000 0 0001 1 0010 2 0011 3 0100 ...

2进制8进制10进制16进制各个之间如何进行换算?
1、十进制转二进制,方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。2、二进制转十进制,方法为:把二进制数按权展开、相加即得十进制数。二、二进制与八进制之间的转换:1、二进制转八进制,3位二进制数按权展开相加得...

请问2进制数如何转换为8进制数,10进制数,16进制数
一、2进制转换成8进制,从左到右3个数为一位,不够补0.如下表 二进制 八进制 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 如二进制:1101 三个数为一位,不够补0,为 001 101B 转换成8进制 对上八进制表就是15(8) 二、二进制转十进制 从最后一...

二进制小数与八、十、十六进制怎么相互转换?
3.二进制变十六进制 (1)四位合一位 你的例子:10101101.11 拆开:1010 1101.1100 转化:A D.C 结果就是AD.C 4.八进制变二进制 法:一位拆三位 例:AB.3 拆开:A B .3 转化:1010 1011.0011 5.八进制变十进制 法:按权展开 和二变十一样,本质不变 例:AB.3 11*8(0次方)+10...

计算机二进制十进制八进制十六进制的转换
1、十六进制转换二进制:“1位变4位”。2、八进制转换二进制:“1位变3位”。3、二进制转换十六进制:左边数四位为一组,不足一组前面用0补齐。4、二进制转换八进制:左边数三位为一组,不足一组前面用0补齐。5、十进制转换八进制:这个数除以八取余。从下往上数。6、十进制转换二进制:...

十进制,二进制,八进制,十六进制之间互相转换的方法是什么??
这样说:1)十进制转(二、八、十六)进制:短除法不断除以(二、八、十六),直到最后的被除数小于(二、八、十六),然后倒序读出全部数字即可(十六进制:10~15分别用ABCDEF表示)。2)(二、八、十六)进制转十进制:从左到右,(二、八、十六)^(n-1)*当前数字自身之和(n表示当前数字所...

2进制8进制10进制16进制各个之间如何进行换算?
1. 二进制转八进制:三位二进制数对应一位八进制数,从右至左每三位二进制数转换为一位八进制数,不足三位的左边补0。通过除以8取余法得到八进制数。2. 八进制转二进制:将八进制数每一位乘以其权重(8的幂次),然后相加,得到的结果即为对应的二进制数。每位八进制数转换为三位二进制数。...

...八进制(O) 十进制(D) 十六进制(H)之间的互相转换过程
每一个十六进制数对应二进制的四位。 2C1D(H)= 0010 1100 0001 1101(B) 7123(O)= 111 001 010 011(B) 2 C 1 D 7 1 2 3 4、二进制转化成八进制和十六制 整数部分:从右向左进行分组。小数部分:从左向右进行分组。 转化成八进制三位一组。 转化成十六进制四位一组。位数不...

二进制、八进制、十进制、十六进制的算法与转换??
整数部分除以8,小数部分乘以8。十进制转十六进制:方法同上。整数部分除以16,小数部分乘以16。 二进制转为八进制:整数部分从右向左,小数部分从左向右, 每3位二进制一组,变为1位八进制。 不足3位时分别在最左端和最右端补0凑够3位。例:(1100101001011.1101)2 = (14513.64)8 八进制抓...

二进制,八进制,十进制,十六进制之间的转换
5、二进制转换为16进制:从右至左,每4个为一组,不足的补0,通过转换为十进制的方法把它们转换为数字,需注意的是十六进制中10-15为A-F,再依次写下了即可。6、十六进制转换为二进制:每一个数转化为4位的二进制数即可,不足的补0,再按顺序排列即可。7、八进制转换为十六进制:先转换为二...

相似回答