【java】oj1473——二进制转换

最近在准备研究生的复试,在九度上刷题,博主是考得北邮研究生,水平比较菜,算法基本不咋样,随便写写自己敲代码过程中出现的各种情况和未解的问题。

part1:思路

     十进制转换为二进制,无非是除二取余,然后将余数倒着输出。为了确定输出二进制的位数,对输入的数据取对+1,得出需要除以2的次数,也就是余数的位数,即二进制的位数。

得出二进制的位数之后,显然好做很多,用循环将除二取余的数输入数据,再用循环输出即可。

  part2:代码

   

import java.util.Scanner;

public class by20120101 {

    public static void main(String[] args)
    {
        System.out.println("input n:");
        int n;
        Scanner cin = new Scanner(System.in);
        n=cin.nextInt();

        int numbers [] = new int [n];
        //输入n个元素
        for (int i=0;i<n;i++)
        {
           numbers[i]=cin.nextInt();
        }

        for (int i=0;i<n;i++)
        {
          change(numbers[i]);
          System.out.println();
        }
    }

    //转为二进制算法
    public static void change(int a)
    {                               

        int c=(int)(Math.log(a)/Math.log(2)+1);
        int[] numbers =new int [c];//存二进制的数组
       //算法主体    

        for(int i=c;i>0;i--)
        {
            numbers[i-1]=a%2;
            a=a/2;
        }
        for(int j=0;j<c;j++)
        {
            System.out.print(numbers[j]);
        }

    }
}

part3:总结   

   这个程序能在eclipse中跑,但是提交九度oj后,却显示的Runtime error,我也不清楚哪里出错了,但是觉得方法还是不太好,应该可以改进,尽量不要算出二进制数的位数。希望有高手看到这篇文章,能够提供些帮助,多谢!

时间: 2024-10-19 09:37:00

【java】oj1473——二进制转换的相关文章

Java 图片 二进制转换

1 import java.awt.image.BufferedImage; 2 import java.io.ByteArrayInputStream; 3 import java.io.ByteArrayOutputStream; 4 import java.io.File; 5 import java.io.IOException; 6 7 import javax.imageio.ImageIO; 8 9 import sun.misc.BASE64Decoder; 10 import

Java基础数据类型二进制转换

前言: 本文主要介绍java基础类型的二进制转换和二进制的基本概念. 二进制: 1,二进制是以0和1为码,逢2进1,比如3=11=1*2+1. 2,在计算机当中其它进制的算法基本基于2进制,因为计算机只认识0和1,比如16进制数则意味着一位16进制码由4位2进制码数表示. 3,在Java语言中byte代表最小计量单位,byte由8位2进制数组成. Java基本数据类型与表示范围(boolean忽略) 1,byte(整型):8位,short(整型):16位,char(字符型):16位,int(整型

java中byte转换int时为何与0xff进行与运算

在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {  String ret = "";  for (int i = 0; i < b.length; i++) {   String hex = Integer.toHexString(b[i] & 0xFF);   if (hex.length() == 1) {    hex = ''0'' + hex;   }   ret += hex.toUp

Java进制转换

java进制转换java中进行二进制,八进制,十六进制,十进制间进行相互转换 十进制转成十六进制:Integer.toHexString(int i) 十进制转成八进制Integer.toOctalString(int i) 十进制转成二进制Integer.toBinaryString(int i) 十六进制转成十进制Integer.valueOf("FFFF",16).toString() 八进制转成十进制Integer.valueOf("876",8).toSt

Java数据类型的转换

Java数据类型的转换,基本类型的相互转换 1如何将字串 String 转换成整数 int? A. 有2个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 Stri

java中byte转换int时为何与0xff进行与运算(转)

在剖析该问题前请看如下代码 Java代码   public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[ i ] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } ret += hex.toUpperC

[转]java中byte转换int时为何与0xff进行与运算

在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) {  String ret = "";  for (int i = 0; i < b.length; i++) {   String hex = Integer.toHexString(b[ i ] & 0xFF);   if (hex.length() == 1) {    hex = '0' + hex;   }   ret += hex.toUpp

最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类

前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int预byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位short与byte[]互转 6.long预byte[]互转 7.byte[]与inputstream互转 8.byte与String互转 9.16进制字符转int 10.十进制转2进制 11.byte[]转16进制字符 12.byte[]数组指定位置抽取byte[] 二.代码实现 package

java GBK字符转换成为UTF-8编码字符

import java.util.HashMap; import java.util.Map; /** * 创建日期: 2014-04-18 10:36:25 * 作者: 黄飞 * mail:[email protected] [email protected] * ©版权归作者所有 * */ public class ConverFromGBKToUTF8 { public static void main(String[] args) { try { ConverFromGBKToUTF8