java进制转换
㈠ java十进制数转换成二进制,8进制以及16进制二进制转十进制
直接运行得了
import java.io.*;
public class test
{
public static void main(String arg[])
{
test a=new test();
System.out.print("请输入一个十进制整数:");
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i=Integer.parseInt(br.readLine());
System.out.print("该数的二进制数是:");
a.BinaryString(i);
System.out.println();
System.out.print("该数的八进制数是:");
a.OctalString(i);
System.out.println();
System.out.print("该数的十六进制数是:");
a.HexString(i);
System.out.println();
System.out.println(Integer.valueOf("101101",2).toString());//2进制转换为10进制
}catch(IOException e)
{
System.err.println(e.toString());
}
}
public void BinaryString(int x)
{
if(x>0)
BinaryString(x/2);
else
return;
System.out.print(x%2);
}
public void OctalString(int x)
{
if(x>0)
OctalString(x/8);
else
return;
System.out.print(x%8);
}
public void HexString(int x)
{
if(x>0)
BinaryString(x/16);
else
return;
if(x%16==10)
{
System.out.print("A");
}
else if(x%16==11)
{
System.out.print("B");
}
else if(x%16==12)
{
System.out.print("C");
}
else if(x%16==13)
{
System.out.print("D");
}
else if(x%16==14)
{
System.out.print("E");
}
else if(x%16==15)
{
System.out.print("F");
}
else
System.out.print(x%16);
}
}
㈡ java中如何将十进制数字转化成二进制
如果表达小于2^31-1的正数代码如下:
public void binaryToDecimal(int n){
int t = 0; //用来记录位数
int bin = 0; //用来记录最后的二进制数
int r = 0; //用来存储余数
while(n != 0){
r = n % 2;
n = n / 2;
bin += r * Math().pow(10,t);
t++;
}
System.out.println(bin);
}
使用字符串的拼接(+)来实现大于2^31-1的数,代码如下:
public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}
可以右移后再与0x01进行&运算得到第一位的数字判断判断它的第几位上是0,第几位上是1,代码如下:
class ByteMove
{
public static void main(String[] args)
{
int i = 7;
move(i);
}
static void move(int num){
for(int i= 0;i<6;i++){
System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));
}
}
}
㈢ java 进制转换
/*
*
* 说明在第一个文本框中输入你要转换的内容,点击“转换”,就会在第二个文本框中出现,转换后的二进制码。
* 这时也可以点击“还原”按钮,把第二个文本框中的二进制码还原为,它的真实的字符。当然你也可以直接在第
* 二个文本框中写出你要还原的二进制码,然后点击“还原”按钮,就可以把第二个文本框中的二进制友还原为
* 它的真实的字符。
*
*
* 做得很急,最近在考试呀,所以代码可能有bug,要是代码有什么问题,可以联系我。
* 或是你想要的功能还没有的话,我可以帮你升级。^_^哈哈。想必你是在追女生吧,用这个来给她写情话不错哦
* 。不过那女生也要会一点点程序哦,不然,她拿到你的二进制码也没办法知道它是什么意思,呵呵
*/
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class Print {
public static void main(String[] args) {
new Win();
}
}
class Win {
JTextArea jTextArea = new JTextArea();//输入框
JTextArea jTextArea2 = new JTextArea();//还原框
JTextArea jTextArea1 = new JTextArea();//二进制框
JLabel jLabel = new JLabel("请在下面输入你要转换的内容:");
JLabel jLabe2 = new JLabel("转换后的二进制码为>>>>");
JLabel jLabe3 = new JLabel("还原二进制码后>>>>");
JButton jButton = new JButton("转换");
JButton jButton1 = new JButton("还原");
public Win() {
JFrame jFrame = new JFrame("窗口");
jFrame.setLayout(null);
jTextArea2.setBounds(10,430,450,80);
jFrame.getContentPane().add(jTextArea2);
jLabe3.setBounds(90,390,1000,20);
jLabe3.setForeground(Color.red);
jFrame.getContentPane().add(jLabe3);
jButton1.setBounds(10, 380, 60, 40);
jFrame.getContentPane().add(jButton1);
jButton1.addActionListener(new Lis());
jLabe2.setForeground(Color.red);
jLabe2.setBounds(80, 150, 1000, 20);
jFrame.getContentPane().add(jLabe2);
jButton.setBounds(10, 140, 60, 40);
jFrame.getContentPane().add(jButton);
jButton.addActionListener(new Lis());
jLabel.setBounds(3, 20, 200, 15);
jFrame.getContentPane().add(jLabel);
jTextArea.setBounds(10, 40, 450, 80);
jFrame.getContentPane().add(jTextArea);
jTextArea1.setBounds(10, 190, 450, 180);
jFrame.getContentPane().add(jTextArea1);
jFrame.setBounds(200, 50, 500, 600);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// 转换为二进制
String ss = "";
public String getBinaryString(String str) {
char[] cstr = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < cstr.length; i++) {
if (Character.isDigit(cstr[i]) || Character.isLetter(cstr[i])
|| Character.getType(cstr[i]) == 5) {
sb.append(Integer.toBinaryString(cstr[i]) + " ");
} else {
sb.append(cstr[i] + " ");
}
}
// ss = sb.toString();// 没有换行之前
int n = 60;
while (n < sb.length()) {
sb.insert(n, "\n");
n = n + 60;
}
return sb.toString();
}
//侦听处理
class Lis implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButton) {
String str = jTextArea.getText();
jTextArea1.setText(getBinaryString(str));
if (jTextArea1.getLineCount() > 9) {
JOptionPane.showMessageDialog(null,"在显示二进制码时,数据量太大,显示不完全,你可以分几次转换!",
"有错误!!!!!!!!",1);
}
} else {
//要从jTextAreal中得到内容
StringBuffer sb = new StringBuffer(jTextArea1.getText());
for(int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) == '\n')
sb.deleteCharAt(i);//把所有的回车符先去掉,不然不好做事
}
String[] lo = sb.toString().split(" ");
StringBuffer sb1 = new StringBuffer();
char c = '\0';
for (int i = 0; i < lo.length; i++) {
if (lo[i].length() > 2)//是文字,字母,数字时
c = (char)Integer.valueOf(lo[i], 2).intValue();
else if (lo[i].equals("")) {//当用户输入的是空格时
c = ' ';
} else //是标点时
c = lo[i].toCharArray()[0];
sb1.append(c);
}
int n = 40;
while (n < sb1.length()) {
sb1.insert(n, "\n");
n = n +40;
}
jTextArea2.setText(sb1.toString());
}
}
}
}
㈣ 用JAVA把二进制数转换成十进制数。
二进制转十进制
Integer.valueOf("0101",2).toString()
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个二进制数: ");
String a = sc.nextLine();
int d = Integer.parseInt(a, 2); // 2进制
int o = Integer.parseInt(a, 8); // 8进制
System.out.println("二进制转为十进制: " + d);
System.out.println("八进制转为十进制: " + o);
计算机内部使用二进制表示数
二进制与十进制的转换是比较复杂的。比如我们要让计算机计算50+50=?,那么首先要把十进制的50转换成二进制的“50”——110010,这个过程要做多次除法,而计算机对于除法的计算是最慢的。把十进制的50转换成二进制的110010还不算完,计算出结果1100100之后还要再转换成十进制数100,这是一个做乘法的过程,对计算机来说虽然比除法简单,但计算速度也不快。
以上内容参考:网络-十进制
㈤ Java里的十二进制,六进制,二进制,分别怎么转换
转换为2的几何级数倍进制比较容易,其他的就不方便了。
先说和10进制的转换:
倒序将2进制数编幂数,例如10101010从后向前幂数依次为7654321,所以它转换为10进制就是1*2^7+0*2^6+1*2^5+0^2^4+1*2^3+0^2^2+1^2^1+0^2^0=170,这种算法适用于将任意进制转换为10进制,只要将底数替换即可。
下面说2的几何级数倍的算法:
一般就是将2进制按2的级数进行分段,比方说8进制(8是2的3次方),将2进制分为每3位一段进行转换,每段单独按十进制转换即可。
10101010,分为10|101|010,然后每段进行单独转换,10转换后为2,101转换后为5,010转换后为2,所以10101010(2)=252(8)。
其他进制一般算法就是先将2进制转换为10进制,再用短除法转换为其他进制,短除法我记不清怎么个算法了,并不是算公约数之类的那个短除法,借位算法比较特殊,只不过最后余数作为最后一位。
例如170(10)进制就使用170=332(7)
㈥ 用JAVA将十进制转换成十六进制
1、用Integer.toHexString方法即可将十进制装成十六进制。
package com.test;
public class Test {
public static void main(String[] args) {
int i = 123;
System.out.println(Integer.toHexString(i));
}
}
㈦ 求java进制转换代码
下面是转换的方法
int n1 = 14;
//十进制转成十六进制:
Integer.toHexString(n1);
//十进制转成八进制
Integer.toOctalString(n1);
//十进制转成二进制
Integer.toBinaryString(12);
//十六进制转成十进制
Integer.valueOf("FFFF",16).toString();
//十六进制转成二进制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六进制转成八进制
Integer.toOctalString(Integer.valueOf("FFFF",16));
//八进制转成十进制
Integer.valueOf("576",8).toString();
//八进制转成二进制
Integer.toBinaryString(Integer.valueOf("23",8));
//八进制转成十六进制
Integer.toHexString(Integer.valueOf("23",8));
//二进制转十进制
Integer.valueOf("0101",2).toString();
//二进制转八进制
Integer.toOctalString(Integer.parseInt("0101", 2));
//二进制转十六进制
Integer.toHexString(Integer.parseInt("0101", 2));
㈧ Java 进制转换
public static void main(String[] args) {
int x = (int)(Math.random()*1000+1);
System.out.println("随机数:"+x);
String allNumber = Integer.toString(x,3);
String[] tmmp = allNumber.split("");
String y = "";
for(String str : tmmp){
if (y.length() == 0 ){
y = y + str;
}else{
y=y+","+str;
}
}
System.out.println("生成的三进制:"+y);
// 逆序输出
StringBuffer sb = new StringBuffer(allNumber);
String tmpx = sb.reverse().toString();
System.out.println("逆序输出结果:"+tmpx);
//计算十六进制
String hexString = Integer.toString(Integer.parseInt(tmpx),16);
System.out.println("hexString="+hexString);
// 都换成十进制进行比较
int intB = Integer.valueOf(hexString,16);
int intA = Integer.valueOf(y,3);
if(intA>intB){
System.out.println("A>B");
}else if(intA==intB){
System.out.println("A=B");
}else{
System.out.println("A<B");
}
㈨ java中的二进制转换
上面的:
下面的是20,表示将数字5转换为二进制左移2位
计算过程:5 << 2
首先把5转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0101,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0001 0100,则转换为十进制是20