精华内容
下载资源
问答
  • 十进制转换成二进制算法如下:1.给定一个数;2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1...

    将十进制转换成二进制的算法如下:

    1.给定一个数;

    2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。

    3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。

    import java.util.Scanner;

    public class ZhuanHuan {

    public static void main(String[] args){

    System.out.println("请输入一个十进制数:");

    Scanner reader = new Scanner(System.in);

    int n=0;

    int i=0;

    int r=0;

    n=reader.nextInt();

    int[] a =new int[10];

    do{

    if(n%2==1){

    r=1;

    }

    else {

    r=0;

    }

    a[i]=r;

    n=n/2;

    i++;

    }

    while(n>0);

    System.out.println("转化成的二进制是:");

    for (int j = i-1; j>=0; j--) {

    System.out.print(a[j]);

    }

    }

    }

    十进制整数转换为二进制整数采用"除2取余,逆序排列"法

    具体做法是:用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二

    制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    对于数值n,二进制最后一位=n%2;计算得到的结果是最后要输出的结果,使用递归函数,联系递归的特点:在递归语句之前计算n%2,在递归调用语句之后

    输出结果,这样先计算的结果反而在最后输出。

    import java.util.Scanner;

    public class ChangeTo2 {

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    System.out.println("请输入一个整型的十进制数:");

    Scanner reader = new Scanner(System.in);

    int num = 0;

    num = reader.nextInt();

    System.out.print("转换后的二进制数为:");

    toBinary(num);

    }

    //递归函数

    static void toBinary( int num){

    int r;

    r = num%2;//最后一位要输出的,即使参数=1,还是要计算到这里结束,只取出余数就ok了。然后顺次返回上一级主调函数,继续执行剩下的……

    //如果商 1 / 2 = 0,计算就可以终止了,不需要再算

    if(num>=2){

    //精华,联系10进制转2进制的算法,每次除以2,取出余数,然后用新的商继续除以2,取出新余数……直到商为0,余数逆序输出即可

    toBinary(num/2);//把新的商作为参数递归调用

    }

    //在递归语句之后输出,这样就是倒叙输出

    System.out.print(r);

    }

    }

    展开全文
  • 十进制转换成二进制算法如下: 1.给定一个数; 2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数...
    将十进制转换成二进制的算法如下:
    
    1.给定一个数;
    2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。
    3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。
    import java.util.Scanner;
    
    public class ZhuanHuan {
    	public static void main(String[] args){
    		
    		System.out.println("请输入一个十进制数:");
    		Scanner reader = new Scanner(System.in); 
    	     int n=0;
    	     int i=0;
    	     int r=0;
    	     n=reader.nextInt();
    	     int[] a =new int[10];
    	     do{	    	 
    	    	 if(n%2==1){
    	    		 r=1;
    	    	 }
    	    	 else {
    				r=0;
    			}
    			a[i]=r;
    	    	 n=n/2;
    	    	 i++;
    	     }
    	     while(n>0);
    	    	System.out.println("转化成的二进制是:"); 
    	    	for (int j = i-1; j>=0; j--) {
    				System.out.print(a[j]);
    			}
    	     
    	}	
    }
    

      


    十进制整数转换为二进制整数采用"除2取余,逆序排列"法

    具体做法是:用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二

    制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    对于数值n,二进制最后一位=n%2;计算得到的结果是最后要输出的结果,使用递归函数,联系递归的特点:在递归语句之前计算n%2,在递归调用语句之后

    输出结果,这样先计算的结果反而在最后输出。

    import java.util.Scanner;
    
    public class ChangeTo2 {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("请输入一个整型的十进制数:");
             Scanner reader = new Scanner(System.in);
             int num = 0;
             num = reader.nextInt();
             System.out.print("转换后的二进制数为:");
             toBinary(num);
    	     
    	}
    	 //递归函数
    	static void toBinary( int num){
    		int r;
    		r = num%2;//最后一位要输出的,即使参数=1,还是要计算到这里结束,只取出余数就ok了。然后顺次返回上一级主调函数,继续执行剩下的……
    		          //如果商 1 / 2 = 0,计算就可以终止了,不需要再算
    		if(num>=2){
    			
    			 //精华,联系10进制转2进制的算法,每次除以2,取出余数,然后用新的商继续除以2,取出新余数……直到商为0,余数逆序输出即可
    			
    			toBinary(num/2);//把新的商作为参数递归调用
    		}
    		//在递归语句之后输出,这样就是倒叙输出
            System.out.print(r);
    		
    	}
    
    }
    

      

     

    转载于:https://www.cnblogs.com/Deco9Zeng/p/4596456.html

    展开全文
  • 使用Java语言完成二进制、八进制、十进制的进制转换,熟悉进制转换算法。一、算法思想 实现进制转换的核心操作是与运算,通过与基数做与运算得到相应进制每一位的值。通过将值倒叙输出即可得到转换后的相应进制的值...

    使用Java语言完成二进制、八进制、十进制的进制转换,熟悉进制转换算法。

    一、算法思想

           实现进制转换的核心操作是与运算,通过和基数做与运算得到相应进制每一位的值。通过将值倒叙输出即可得到转换后的相应进制的值。

    二、数组的应用

           对于十六进制的转换,会出现字母,这时应用数组的查表法,即数组的角标与数组的元素实现一一对应的查表关系。这是数组的常用操作。

            补充知识:数组的使用:如果数据出现了对应关系,而且对应关系的一方是有序的数字编号 。并作为角标使用,这时就必须想到数组的使用。

    三、程序实现

    //进制转换
    class JZZHDemo
    {
    	public static void main(String[] args){
    		
    		ToHex(26);    //十六进制
    		ToBinary(26);  //二进制
    		ToOctal(26);    //八进制
    		
    	}
    	
    	
    	public static void ToHex(int num){
    		trans(15, 4, num);
    	}
    	
    	public static void ToOctal(int num){
    		trans(7, 3, num);
    	}
    	
    	public static void ToBinary(int num){
    		trans(1, 1, num);
    	}
    	
    	public static void trans(int base, int offset, int num){
    		
    		if(num == 0){
    			System.out.println(num);
    			return;
    		}
    		
    		char[] chs ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    		//定义查表数组;
    		
    		char[] arr = new char[32]; //定义一个临时容器数组用来存储运算数据;
    		int pos = arr.length;   
    		
    		while(num != 0){
    			int temp = num & base;
    			arr[--pos] = chs[temp];    //temp通过查表数组的转化,将对于十六进制值存储到数组arr中
    			num = num >>> offset;      //num 右移
    		}
    		
    		for(int x=pos; x<arr.length; x++){       //x=pos while循环结束后pos最后的值为起始位置。
    			System.out.print(arr[x]);
    		}
    		System.out.println();
    		
    	}
    	
    }


    四、总结

    进制转换算法做为基础算法,对于初学者来讲还是要熟练掌握的,在进制转换的算法中包含了很多思想,也存在一些小细节,以后要多基础算法多加练习和掌握。


    展开全文
  • 再把二进制数转换为字符数组,再遍历这个字符数组计算1出现的次数,但是存在一些问题,首先在没有Java相关类库使用的情况下,十进制转换为二进制这个过程应该是很复杂的,并且如果最求算法效率的话,对于数组所需的...

     

    分析:

    1.很多人看到这个需求的时候,第一反应是先把给定的十进制数转换成二进制数,再把二进制数转换为字符数组,再遍历这个字符数组计算1出现的次数,但是存在一些问题,首先在没有Java相关类库使用的情况下,十进制转换为二进制这个过程应该是很复杂的,并且如果最求算法效率的话,对于数组所需的额外空间以及循环遍历的n次比较的开销是我们所希望避免的。

    2.然后我们有相关经验的程序员应该可以想到,既然涉及到了二进制的问题,那么必然少不了Java中的位运算,自然而然地想到了&、|、>>等相关运算符,于是,很多人想到了如下解题方法:

     

    public static int getNumber(int n){
            int count = 0;
            while(n!=0){
                if((n&1)==1){
                    count++;
                }
                //将n右移一位
                n = n>>1;
            }
            return count;
        }

    二进制数与1进行与运算,如果结果得到1说明,该二进制数的最低位为1,则计数加1,然后让n向右移1位,,然后再与1进行与运算。最后美滋滋地得到二进制中1出现的次数。

     

    但是:上述的代码忽略了一个致命的问题,就是如果给定的整数位负数,在该数右移操作的时候,高位补的是1,而不是0,逐渐32位的数都会变成1,那么进行与运算就永远得到是1,那么就变成了死循环。

    3.在第2步中,总体的思路已经没问题了,那么如何解决上面所出现的问题呢?我们想到位运算中,右移运算与数的正负有关,但是左移运算与数的正负并没有关系,我们可以用到左移运算,这次我们不让给定的整数进行位移运算,我们让1进行左移运算,然后再与给定整数的二进制数进行与运算,这样,就完美解决了整数正负的问题

    实现代码如下:

     

    public static int getNumber2(int n){
            int count = 0;
            //这是需要进行左移运算的1,其二进制数为
            //0000 0000 0000 0000 0000 0000 0000 0001
            int target = 1;
            //如果1左移到最左端,所得得为 0000 0000 0000 0000 0000 0000 0000 0000 为0,则跳出循环
            while(target !=0){
                if((n&target) !=0){
                    count++;
                }
                //左移运算
                target = target<<1;
            }
            return count;
        }

     

     

    4.除了3中的解题方法外,再介绍一种更为高效的方法

    如果将一个二进制数-1,那么该二进制数最右侧的1将会变成0,1后面的0均变成1,1前面的数保持不变

    也就是说,如果把一个二进制数-1,那么概述最右侧的1及1右侧的所有书将改变(0-->1或者1--->0)

    如果把这个数和原数进行与运算,那么最右侧的那个1前面的1将不变,1以及1右侧的所有书将变成0,也就是说进行一次上述运算后,原数最右侧的那个1会变成0,那么只要重复上述操作,当原数变成0时,循环就是1的个数

     

    实现代码

     

    public static int getNumber3(int n){
            int count =0;
            while(n!=0){
                n=n&(n-1);
                count++;
            }
            return count;
        }

     

     

     

     

     



     

     

     

    展开全文
  • 算法-java实现】计算int对应二进制中1的个数 一.问题描述: 1.输入:输入一个int类型整数 2.输出:输出这个整数int对应二进制中1的个数 比如:输入14,对应的二进制数是1110,则输出3 ​ 输入15,对应的二进制数是...
  • 首先明确是了是十进制同时速度也快了不少。 <pre><code> javascript | 0: 55.003ms Math.floor: 55.196ms parseInt(x): 197.627ms parseInt(x, 10): 131.175ms (| 0) + 1: 28.960ms Math.ceil: 113.976ms ...
  • 算法

    2021-02-28 10:56:39
    第四章:多维数组与矩阵 相关题目: ① 顺时针打印二维数组 ② 将元素为零的元素行列清零(不能逐个扫描处理,先扫描一遍记录,再扫描处理) ... 十进制转化为二进制时调用toBinaryString(); 十进制转化
  • 题目要求:对于XN+1或XN*2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。 用C或C++或java或python语言实现程序解决...
  • 第五章 消息摘要算法--MAC 注意:本节内容主要参考自《Java加密与解密的艺术(第2版)》第6章“验证数据完整性--消息摘要算法” 5.1、mac(又称为Hmac) 原理:在md与sha系列算法...JDK(缺少二进制字节数组转十...
  • 二进制字符串成字符数组4.遍历字符数组,将相邻的前后两位进行交换 import java.util.*; public class 整数的奇偶位互换 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); ...
  •  输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 题目分析: 跳进面试官的陷进:利用for循环从1到n输出: 在字符串上模拟数字加法的解法: 模拟一个大叔最...
  • Java运算符案例

    2021-03-31 17:14:49
    运算规则就是两数转换为二进制进行比较,如果是同值取0、异值取1,再转换为十进制就是结果。 案例1: 1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现 一次。每个数组元素只能...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  • Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
  • Java语言基础下载

    热门讨论 2010-09-07 21:56:38
    二进制大对象BLOB 357 RowSet 新特性 359 JdbcRowSet 360 FilteredRowSet 361 内容总结 363 独立实践 364 第二一章:XML基础 366 学习目标 366 XML的概念 367 定义XML文档 368 命名冲突 371 使用前缀解决命名冲突...
  • 图灵机XN*2

    2021-04-14 17:01:38
    对于XN+1或XN2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。 用C或C++或java或python语言实现程序解决问题。 在这里...
  • 二进制、八进制、十进制和十六进制等常用数制及其相互转换 1.2 计算机内数据的表示  数的表示(补码表示,整数和实数的表示,精度和溢出)  非数值表示(字符和汉字表示,声音表示、图像表示) 1.3算术运算...
  • 21天学通C++ (中文第五版)

    热门讨论 2010-06-23 16:57:03
    本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的范例程序详细而全面地阐述了C+的基本概念和技术,包括控制输入/输出、循环和数组、面向对象编程、模板和创建C++应用程序等。这些内容被组织成结构...
  • 2005-2009软件设计师历年真题

    千次下载 热门讨论 2010-05-18 19:20:10
     • 二进制十进制和十六进制等常用制数制及其相互转换  1.2 数据的表示  • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)  • 非数值表示(字符和汉字表示、声音表示、图像表示...
  • 11.7.2 尾数零和十进制小数点(ios:showpoint) 11.7.3 对齐(ios::left、ios::right、ios::internal) 11.7.4 设置填充字符(fill、setfill) 11.7.5 整数流的基数:(ios::dec、ios::oct、ios::hex、ios::...
  • 11.7.2 尾数零和十进制小数点(ios:showpoint) 11.7.3 对齐(ios::left、ios::right、ios::internal) 11.7.4 设置填充字符(fill、setfill) 11.7.5 整数流的基数:(ios::dec、ios::oct、ios::hex、ios::...
  • 编程新手真言......

    2009-04-02 20:25:15
    2.12 二进制指令与循环 66 2.13 所谓函数 67 2.14 所谓流程 68 2.15 为什么需要数据类型和数据结构 68 2.16 数据类型和数据结构是二种不一样的东西 69 2.17 为什么需要变量这些东东 69 2.18 面向类型化的设计和面向...
  • 二进制表示形式为1000000000,那么n - 1的二进制表示形式为0111111111</li><li>hash为key经过hash函数计算之后的值,使用公式「(h = key.hashCode()) ^ (h >>> 16)」计算,由于取模方式只会...
  • 程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制十进制 / 八进制和十六进制 变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换 数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符...
  • 而Remoting可以利用TCP/IP,二进制传送提高效率。 31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行...
  • 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...
  • 在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

十进制转二进制java算法数组

java 订阅