感悟网 导航

二进制、八进制、十进制、十六进制如何互相转换?谁有教程啊 二进制,八进制,十进制,十六进制之间是怎么转换的

作者&投稿:里承 (若有异议请与网页底部的电邮联系)
二进制,八进制,十进制,十六进制之间怎么转换~

一。进制概念

1。 十进制

十进制使用十个数字(0、1、2、3、4、5、6、7、8、9)记数,基数为10,逢十进一。

历史上第一台电子数字计算机ENIAC是一台十进制机器,其数字以十进制表示,并以十进制形式运算。设计十进制机器比设计二进制机器复杂得多。而自然界具有两种稳定状态的组件普遍存在,如开关的开和关,电路的通和断,电压的高和低等,非常适合表示计算机中的数。设计过程简单,可靠性高。因此,现在改为二进制计算机。

2。 二进制

二进制以2为基数,只用0和1两个数字表示数,逢2进一。

二进制与遵循十进制数遵循一样的运算规则,但显得比十进制更简单。例如:

(1)加法:0+0=0 0+1=1 1+0=1 1+1=0

(2)减法:0-0=0 1-1=01-0=1 0-1=1

(3)乘法:0*0=0 0*1=01*0=0 1*1=1

(4)除法:0/1=0 1/1=1,除数不能为0

3。 八进制

所谓八进制,就是其基数为8,基数值可以取0、1、2、3、4、5、6、7共8个值,逢八进一。

八进制与十进制运算规则一样。那么为什么要用八进制呢?难道要设计八进制的计算机么?实际上,八进制与十六进制的引用,主要是为了书写和表示方便,因为二进制表示位数比较长。如:(1024)10 用二进制表示为 (10000000000)2,共有11个数字,用八进制表示为(2000)8。更重要的是,由于二进制与八进制存在在一种对等关系,每三位二进制与一位八进制数完全对等(23=8)。所以二进制和十进制在运算上无区别,而时进制不具备这一优点。

4。 十六进制

十六进制应用也是非常广泛的一种计数制。在使用者看来,十六进制是二进制数的一种更加紧凑的一种表示方法。

基数为:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十进一。在十六进制系统中,数值为10到15的数分别用A、B、C、D、E、F表示。

二进制数及与之等值的八进制、十进制和十六进制数

二进制 八进制 十进制 十六进制
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F


二。进制转换

1。二进制与十进制数间的转换

(1)二进制转换为十进制

将每个二进制数按权展开后求和即可。请看例题:

把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10

(2)十进制转换为二进制

一般需要将十进制数的整数部分与小数部分分开处理。

整数部分计算方法:除2取余法请看例题:

十进制数(53)10的二进制值为(110101)2

小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题:

将(0.5125)10转换成二进制。(0.5125)10=(0.101)2

2。 八进制、十六进制与十六进制间的转换

八进制、十六进制与十六进制之间的转换方法与二进制,同十进制之间的转换方法类似。例如:

(73)8=7*81+3=(59)10

(0.56)8=5*8-1+6*8-2=(0.71875)10

(12A)16=1*162+2*161+A*160=(298)10

(0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10

十进制整数→→→→→八进制方法:“除8取余”

十进制整数→→→→→十六进制方法:“除16取余” 例如:

(171)10=(253)8

(2653)10=(A5D)16

十进制小数→→→→→八进制小数 方法:“乘8取整”

十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0。71875)10=(0.56)8

(0.142578125)10=(0.3C8)16

3.非十进制数之间的转换

(1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

2。二进制与十六进制转换

转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16

二进制与十进制之间的转换


1
十进制转二进制
方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
(具体用法如下图)

2
二进制转十进制
方法为:把二进制数按权展开、相加即得十进制数。
(具体用法如下图)

END
二进制与八进制之间的转换


1
二进制转八进制
方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。
(具体用法如下图)

2
八进制转成二进制
方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
(具体用法如下图)

END
二进制与十六进制之间的转换


1
二进制转十六进制
方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
(具体用法如下图)

2
十六进制转二进制
方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
(具体用法如下图)

END
十进制与八进制与十六进制之间的转换


十进制转八进制或者十六进制有两种方法
第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。
第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。
(具体用法如下图)

八进制或者十六进制转成十进制
方法为:把八进制、十六进制数按权展开、相加即得十进制数。
(具体用法如下图)

在计算机中数值是用二进制表示的,之所以要用八进制和十六进制,是因为它们与二进制之间的互相转换很方便,而且它们比长长的一串二进制数要方便书写和记忆。要把二进制转换为八进制,需要用一张表,如下:
二进制 八进制
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

//这是我以前写的。。你看下吧。。
其他进制转换成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;
}
}

用十进制的转化成其他进制的很简单,只要用这个十进制数除以它,得到余数,每除一次得到一个余数,直到不够除,把余数从下到上排列得到的就是所求,比如十进制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.其他进制类似算.至于其他进制转换比较复杂,鉴于楼主很抠不给分,所以也不便详细描述,描述也不一定看的懂```小算一下拿两分闪人.````

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

C语言可以直接转的,没有,可以直接用的
你用C语言做一个函数给Java用就可以了

这在C语言里一句话的事

这是数学问题,和程序类型无关 C最简单

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

《二进制,八进制,十进制,十六进制之间怎么转换》
答:十进制到八进制:除8取余数 最后把余数倒过来 同时我们也可以先将十进制转换成二进制,然后将二进制又转换成八进制 比如:2456 转化成八进制数字:4630 2456/8=307,余0;307/8=38,余3;38/8=4,余6;4/8=0,余4。将所有余数倒序相连,得到结果:4630。因此十进制的2456转换为八进制结果为46...

《二进制、四进制、八进制、十进制和十六进制如何表示?》
答:八进制用O表示,八进制的基数R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。4、十进制 十进制用字母D来表示,其中D是英文十进制Decimal的首字母D。5、十六进制 十六进制用字母H来表示,在c语言中用添加前缀0x以表示十六进制数。...

《二进制十进制八进制十六进制的对应表》
答:二进制十进制八进制十六进制的对应表如下图所示 二进制数是逢2进位的进位制,0、1是基本算符;计算机运算基础采用二进制。电脑的基础是二进制。在早期设计的常用的进制主要是十进制(因为我们有十个手指,所以十进制是比较合理的选择,用手指可以表示十个数字,0的概念直到很久以后才出现,所以是1-10而...

《二进制,八进制,十进制,十六进制的表示》
答:DEC表示十进制 十进制就是日常用的数制,用0~9这十个数码表示数字,它的基数是10,进位规则是“逢十进一”OCT表示八进制 八进制就是用0~7这八个数码表示的数,它的基数是8,进位规则 是“逢八进一”BIN表示二进制 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的...

《电脑中的2进制10进制16进制的换算》
答:⑴二进制转换成十进制 把十进制数17转换二进制数。2 17 1(最低位)2 8 0 2 4 0 2 2 0 1 1(最高位)结果等于10001 ⒉二进制转换成十进制 把二进制数11011转换成十进制。(11011)2=1×24 1×23 0×22 1×21 1×20 =16 8 0 2 1 =27 八进制、十六进制与十进制的转换。⑴十...

《计算机里的二进制、十六进制、十八进制是怎么一回事啊?》
答:二进制,八进制十进制十六进制之间数据转换 十进制转二进制(整数及小数部分):1、把该十进制数,用二因式分解,取余。以235为例,转为二进制 235除以2得117,余1 117除以2得58,余1 58除以2得29,余0 29除以2得14,余1 14除以2得7,余0 7除以2得3,余1 3除以2得1,余1 从得到的1...

《二进制、八进制、十进制、十六进制之间怎样转换?》
答:就是一个相应八进制数的表示。010110.001100B=26.14Q 八进制转二进制反之则可。3-2二进制转十进制:见1 3-3二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足,就是一个相应十六进制数的表示。00100110....

《2进制、8进制、10进制、十六进制分别是什么》
答:现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。

《二进制、八进制、十进制、十六进制分别代表什么》
答:二进制是B,八进制是O,十进制是D,十六进制是H。1、十进制是Decimal的缩写 2、二进制Binary的缩写 3、十六进制简写为hex,用H代替。4、八进制缩写OCT或O 书写的格式通常也是如此:八进制用下标8或数据后面加O表示。十六进制数通常在表示时用尾部标志H或下标16以示区别。二进制数的书写通常在数的...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网