精华内容
下载资源
问答
  • 此函数将十进制基数为 10)转换为定点 Qa.b 格式,其中“a”是二进制小数点左侧不包括符号位的位数,“b”是二进制小数点左侧的位数小数点右边。 输出格式为二进制或十六进制(默认为十六进制)。 使用命令“dec...
  • 模拟十进制数到二进制的转换过程,以LED来模拟各个二进制位,并能以动画方式模拟计数的过程。 选择手动方式时,将8个LED变成滑动条中数字的二进制(基数2)表示。例如,如果滑动条设置为数字10(在二进制中表示为...
  • dec2senary 将十进制基数 10)系统中的任何给定数字转换为 senary(或 sexenary,即基数 6)系统。 这不是以 16 为基数的十六进制数字系统。在三元系统中,最大数字是 5,而 6 被转换为 10。在三元系统中没有(6 ...
  • 常用的进制有二进制,八进制,十进制,十六进制。 二.将整数转换成十六进制 二.一 将int整数转换成十六进制(一) 先写一个主方法,接下来,所有的方法都是通过main 方法来调用的。 不用Junit测试。 做静态的方法,...

    一. 进制转换

    在生活和实际开发中,进制转换是一个常考的知识点。 虽然Java开发者已经对其进行了封装,但还是要学会自己编写相应的进制转换器的。 常用的进制有二进制,八进制,十进制,十六进制。

    二.将整数转换成十六进制

    二.一 将int整数转换成十六进制(一)

    先写一个主方法,接下来,所有的方法都是通过main 方法来调用的。 不用Junit测试。 做静态的方法,类似于工具的形式。

    public static void main(String []args){
    		System.out.println(printOX1(1024));
    }
    

    先用最简单的方法进行写程序。 求十六进制,就是将这个数字不断的除以16,然后得到余数。 去判断这个余数的大小,如果是0 ~ 9 ,那么就用数字0 ~ 9 来表示,如果是10 ~ 15 ,那么 就用字符’A’ ~ ‘F’ 或者小写的 ‘a’ ~ ‘f’ 来表示。 然后,用商来替换这个数字,继续进行循环。
    最简单的方式,先用一个字符串来接收转换后的进制结果。要循环八次。 为什么用8呢,因为int型是4个字节,十六进制最大用四个字符来表示。 所以,最大是4*8/4=8 个长度。

    public static String printOX1(int num){
    		//1. 判断,如果是0的话,就直接返回0
    		if(num==0){
    			return "0";
    		}
    		//2.16进制的话,存储int型,可以存储4*32/16=8 个长度。
    		StringBuilder sb=new StringBuilder();
    		for (int i = 0; i <8; i++) {
    			//3. 将这些数字除以16,得到余数。 求的是低四位。
    			int temp=num&15;
    			if(temp>9){
    				sb.append(temp-10+'A');
    			}else{
    				sb.append(temp);
    			}
    			num=num>>>4; //除以16,得到商。 将商当成除数。
    		}
    		return sb.toString();
    	}
    

    上面这个运行输出后,结果是:
    在这里插入图片描述
    这个顺序是颠倒的,并且还有多余的0存在。

    二.二 将int整数转换成十六进制(二)

    改进: 根据余数来求数字和字符,其实是可以转换成数组的。 利用数组的查表法进行相应的改变。 将余数放入到数组的下标索引上,就可以取出相应的表示字符。

    public static String printOX2(int num){
    		//1. 判断,如果是0的话,就直接返回0
    		if(num==0){
    			return "0";
    		}
    		// 定义一个字符数组,这个索引与十六进制的表示方式一样。
    		char [] hexs={'0','1','2','3','4','5','6','7','8','9',
    				'A','B','C','D','E','F'};
    		StringBuilder sb=new StringBuilder();
    		for (int i = 0; i <8; i++) {
    			int temp=num&15;
    			sb.append(hexs[temp]); // 根据下标去求数组中查询相应的值。
    			num=num>>>4;
    		}
    		return sb.toString();
    	}
    

    运行后,结果仍然是: 00400000, 顺序颠倒,有零。
    在这里插入图片描述

    二.三 将int整数转换成十六进制(三)

    利用数组的方式去解决。 将得到的这个值,倒序放入到一个数组中,就是将004 00000 倒序放入数组中。 那么 此时 a[0]=0,a[1]=0,… … a[4]=0, a[5]=4, a[6]=0,a[7]=0; 然后将这个数组从非零的索引位置处进行输出即可。 要记录下这个非零的索引位置。

    public static String printOX3(int num){
    		//1. 判断,如果是0的话,就直接返回0
    		if(num==0){
    			return "0";
    		}
    		//2.16进制的话,存储int型,可以存储4*32/16=8 个长度。
    		char [] hexs={'0','1','2','3','4','5','6','7','8','9',
    				'A','B','C','D','E','F'};
    		char [] tabs=new char[8];
    		StringBuilder sb=new StringBuilder();
    		int pos=tabs.length; 
    		while (num>0) {  //不知道要运行几次。
    			//3. 将这些数字除以16,得到那个要转换的值。
    			int temp=num&15;
    			tabs[--pos]=hexs[temp];  //上面用的是长度,这里用--pos. 要注意,索引越界的问题。
    			num=num>>>4;
    		}
    		for(int i=pos;i<8;i++){
    			sb.append(tabs[i]);
    		}
    		return sb.toString();
    	}
    

    运行之后,就是:
    在这里插入图片描述
    正确的十六进制数字。

    二.四 将int整数转换成十六进制(四)

    利用String 的format 格式化方法进行求解。 格式信息是 %x. x为十六进制。

        String.format("%x",1024);   // 是String 类型
    

    二.五 将int整数转换成十六进制(五)

    Java底层开发人员,封装了一个方法。 可以自动将数字进行转换成十六进制。
    开发中,推荐使用这一个。

    	Integer.toHexString(1024)    //转换成十六进制。 二进制,八进制,也有类似的方法。
    

    三. 十进制转其他的进制

    只支持常见的二进制,八进制,十六进制。 这种方式,暂时不支持其他的进制。后面有其他的方法会慢慢支持的。

    public static void main(String []args){
    	int num=1024;
    	System.out.println("十六进制:"+toHex(num)); //转换成十六进制
    	System.out.println("二进制:"+toBinary(num)); //转换成二进制
    	System.out.println("八进制:"+toOct(num)); //转换成八进制
    }
    

    其中,十六进制的方法是:

    public static String toHex(int num) {
    		return  toTrave(num,15,4); //基数是15,右移4位。
    	}
    

    虽然二进制和八进制,已经可以证明,肯定是数字型的。但由于位数相比较十进制较多,用int 或者long接收的话,都有可能造成溢出。 所以,不建议用long 或者int 接收 。 直接用字符串接收,是数字型的字符串。
    其中,八进制的方法是:

    public static String toOct(int num) {
    		return toTrave(num,7,3);
    	}
    

    其中,二进制的方法是:

    public static String toBinary(int num) {
    		return toTrave(num,1,1);
    	}
    

    共同的方法是 toTrave()的定义是:

    public static String toTrave(int num,int base,int moveIndex){
    		//1. 判断,如果是0的话,就直接返回0
    		if(num==0){
    			return "0";
    		}
    		//2.16进制的话,存储int型,可以存储4*32/16=8 个长度。
    		char [] hexs={'0','1','2','3','4','5','6','7','8','9',
    				'A','B','C','D','E','F'};
    		char [] tabs=new char[8];
    		StringBuilder sb=new StringBuilder();
    		int pos=tabs.length; 
    		while (num>0) {  //不知道要运行几次。
    			//3. 将这些数字除以基数,得到那个要转换的值。
    			int temp=num&base;
    			tabs[--pos]=hexs[temp];  //上面用的是长度,这里用--pos. 要注意,索引越界的问题。
    			num=num>>>moveIndex; 
    		}
    		for(int i=pos;i<8;i++){
    			sb.append(tabs[i]);
    		}
    		return sb.toString();
    	}
    

    与上面的printOX3() 方法是一样的。 只是将15,和>>>4 的4 转换成局部变量而已。

    四. String.format 方法的支持

    		System.out.println(String.format("%x",1024));//十六进制
    		System.out.println(String.format("%o",1024)); //八进制
    		System.out.println(String.format("%d",1024)); //十进制
    		System.out.println(String.format("%b",1024)); //%b,并不是二进制,而是会输出true. 非空为true
    

    五. Integer 的toString() 方法封装

    		System.out.println(Integer.toBinaryString(1024)); //二进制
    		System.out.println(Integer.toOctalString(1024)); //八进制
    		System.out.println(Integer.toHexString(1024)); //十六进制	
    

    如果要转换成其他进制的话,用toString(十进制数字num,要转换的进制位) 的方法。

    System.out.println(Integer.toString(1024,7));   //转换成七进制数
    System.out.println(Integer.toString(1024,2));  //当然,也可以用它转换成二进制数。
    

    五. Integer 的parseInt(“数字字符串”,“原先的进制”) 和valueOf(“数字字符串”,原先的进制) 方法封装

    这两个方法,都是转换成十进制的。

    System.out.println(Integer.parseInt("400",16)); //将16进制的400转换成十进制
    System.out.println(Integer.valueOf("400",8));//将8进制的400转换成十进制
    

    谢谢!!

    展开全文
  • 写一个函数,输入一个十六进制,输出相应的十进制数(C语言) 题目要求:如标题 思路: 十六进制为:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15) 比如0xFF=1516ˆ1+1516ˆ0=255,...

    写一个函数,输入一个十六进制数,输出相应的十进制数(C语言)

    题目要求:如标题

    思路:

    1. 十六进制数为:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)
    2. 比如0xFF=1516ˆ1+1516ˆ0=255,0xAB=1016ˆ1+1116ˆ0=171
    3. 设定length=strlen(str)-1,term为每一项的值。同时设定i,令i=0;i<=length;i++
    4. a为相应的十六进制数转为十进制数的乘数,即(0~15)
    5. 此时需要用到pow函数,则term=a*pow(16,length-i),最后把term叠加即可

    以下是具体代码:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    int main()
    {
        void hexadecimal_decimal(char str[]);
        char string[1000];
        printf("please enter a hexadecimal number: ");
        gets(string);
        hexadecimal_decimal(string);
        return 0;
    }
    
    
    void hexadecimal_decimal(char str[])
    {
        int length;
        length=strlen(str)-1;
        int sum=0;
        int term;
        int i;
        int a;
        for(i=0;i<=length;i++)
        {
            if(str[i]>='0' && str[i]<='9')
                a=str[i]-'0';
            else if(str[i]>='A' && str[i]<='F')
                a=10+(str[i]-'A');
            else if(str[i]>='a' && str[i]<='f')
                a=10+(str[i]-'a');
            term=a*pow(16,length-i);
            sum=sum+term;
        }
        printf("The decimal number is: %d\n",sum);
    }
    
    展开全文
  • 二进制转成十进制方法按权相加法:数码与权值相乘,然后将积相加1010101上面这个二进制数转成十进制数是首先,先展开从右到左公式数码 乘以 基数的数码位数减1次幂(12零次方 ) +(02一次方)+(12二次方)+(02的4...

    二进制转成十进制方法
    按权相加法:数码与权值相乘,然后将积相加
    1010101
    上面这个二进制数转成十进制数是
    首先,先展开
    从右到左
    公式
    数码 乘以 基数的数码位数减1次幂
    (12零次方 ) +(02一次方)+(12二次方)+(02的4 - 1方)+(12的5-1)+(02的6-1方)+(1*2的6-1方)

    八进制转成十进制
    数码与权值相乘,然后将积相加
    3243
    数码与基数的数码位数-1次幂相乘
    38的4-1次方 + 28 的 3-1次方 + 48 的2-1次方 38的1-1次方

    十六进制转成十进制
    数码与权值相乘,然后将积相加
    a123
    数码与基数的数码位数减一次方相乘
    10 16的 4-1次方 + 1 16 的3-1次方 + 2 16的2-1次方 + 316的1-1次方

    转载于:https://blog.51cto.com/11634243/2165970

    展开全文
  • 一、绪论 十六进制(Hexadecimal):在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或...著名的英国科学史学家李约瑟教授曾对中国商代记数法予以很高的评价,"如果没有这种十进制,就几乎不可能出现我...

    一、绪论

    十六进制(Hexadecimal):数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15。

    十进制(Decimal System):每相邻的两个计数单位之间的进率都为十;十进制是中华民族的一项杰出创造,在世界数学史上有重要意义。著名的英国科学史学家李约瑟教授曾对中国商代记数法予以很高的评价,"如果没有这种十进制,就几乎不可能出现我们现在这个统一化的世界了",李约瑟说:"总的说来,商代的数字系统比同一时代的古巴比伦和古埃及更为先进更为科学。"

    八进制(Octal):一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。

    二进制(binary):数学数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。

    二、进制之间转换原则

    转换原则:不同进制之间的转换本质就是确定各个不同权值位置上的数码。转换正整数的进制的有一个简单算法,就是通过用目标基数作长除法;余数给出从最低位开始的“数字”

    基于上述原则详细解释十进制转换成二进制:

    十进制整数部分转换:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    十进制小数部分转换:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    三、具体代码

    #include <stdio.h>
    #define BASE_SIZE 32
    #define HEX 16
    
    int binary_conversion( int value_t , int target_system_t )
    {
      int value = value_t;
      int target_system = target_system_t;
      int target_value [BASE_SIZE] = {0};
      int target_value_i = 0;
      while( value )
      {
       target_value[target_value_i] = value % target_system; 
       value = value / target_system;
       target_value_i++;
      }
    
        if( target_system == HEX )
        {
            for( ; target_value_i >= 0; target_value_i-- )
    	    {
    		  printf( "%x", target_value[target_value_i] );
    	    }
        }else{
    	    for( ; target_value_i >= 0; target_value_i-- )
    	    {
    		  printf( "%d", target_value[target_value_i] );
    	    }
    	}
    	return 0;
    }
    
    int mian( void )
    {
        int input_value = 0; 
        int target_system = 0;
        scanf( "%d,%d", &input_value, &target_system ); 
        binary_conversion( input_value, target_system );
        return 0;
    }

    int binary_conversion( int value_t , int target_system_t )函数就是实现十进制与其他进制数之间的转换,输入参数value_t就是需要转换的数值, 输入参数target_system_t 就是需要把十进制转换为哪种进制数。

    展开全文
  • 此函数将创建一个任意基数和位数的真值表矩阵。 abTruthTable(base,bits) 例如:abTruthTable(4,2) 答案 = 0 0 0 1 0 2 0 3 1 0 1 1 1 2 1 3 2 0 2 1 2 2 2 3 3 0 3 1 3 2 3 3 我很难找到我想要的简单的东西,...
  •  我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为 1*102+2*101+3*100这样的形式。 ...
  • dec2any 将给定的数字从十进制基数 10)系统转换为任何(基数 0-10)系统。 转换应该是系统 10 或更少。
  • 快速理解二进制计数的基数和位权

    千次阅读 2020-01-08 08:52:20
    伸出你的右手,从小指开始,给每个手指指定一个位权,位权依次是1、2...00111这个神秘的数字就是二进制计数,称它为二进制数是因为它只有0和1两个数字,用数学语言来说就是基数为2。依次类推,基数为3的是三进制计数...
  • 十进制转换为n进制

    2018-08-18 18:13:30
    int A,r; struct Node *first; printf("请输入一个十进制整数:"); scanf("%d",&A); printf("请输入转换进制的基数:"); scanf("%d",&r); first=Transform(A,r);... printf("十进制%d转换为%d进制",A,r);
  • && 和 & 的区别,&&具有短路功能,当某个数十进制时不为回文时就不用判断后面的了,虽然判断的语句有些厂,但是用新的值将其结果接收再拿进来判断会增加开销。 Java中有实现好的方法,在Integer中存在方法...
  • 十进制转数换成其他进制 十进制数除以其他进制取余反序排列 #include #define BASE 16 //要转换的进制类型 int trans (int n) { if (n == 0) return; trans (n/BASE); //递归取整 if (n%BASE > 9)...
  • 十进制: 0 1 2 3 4 5 6 7 8 9 十六进制: 0 1 2 3 4 5 6 7 8 9 A B C D E F 基数 二进制: 二(逢二进一) 八进制: 八(逢八进一) 十进制: 十(逢十进一) 十六进制: 十六(逢十六进一) 其他进制转...
  • 例:我们将728这个十进制数转换为4位十进制表示。通常用于数码管的显示。 首先我们定义一个比较寄存器comp,因为转换的值为728,所以定义一个16位的寄存器2^16=1024*64(偏大)。 在定义4个转换寄存器,4位足够。 ...
  • 对10进制数进行基数排序 typedef int KeyType; typedef int InfoType; typedef struct RedType { KeyType key; InfoType otherinfo; }RedType; typedef char KeysType; //定义关键字类型为字符型 typedef struct...
  • 对于相关进制问题大约都是十进制与其余进制相互之间的转换问题,首先介绍数学的解题思想,进而通过java语言进行实现。...假设有一个十六进2AF5,转化为十进制用竖式计算:2AF5换算成10进制:第0位:5*
  • 关于一个的表示,我们常用的是十进制(人一般有十根手指嘛),另外也可以通过二进制、八进制、十六进制等表示(可以相互转换),而计算机存储始终采用的是二进制(逻辑电路中利用电的低电平表示 0 ,高电平...
  • 《Python数据结构与算法分析》(第二版) pyStack模块 # !/user/bin/env python # coding:utf-8 ...'''十进制转二进制 def dividedBy2(decNumber): remainStack = Stack() while decNumber > 0: ...
  • 十进制基数为10,数码由0-9组成,计数规律逢十进一。 进制有 0~9 共10个数字,基数为10,在加减法运算中,逢十进一,借一当十。 二进制 用0、1两个数字来表示数值,这就是二进制 二进制的算法和十进制是类似的: ...
  • 将带有Web前端的二进制转换为十进制数。 {使用网络前端将二进制转换为十进制数。.},{September 10,2015} 作者:{克里斯·安德伍德(Chris Underwood)和蒂姆·凯洛格(Tim Kellogg)} 描述 {允许用户输入...
  • 基数 这是一个深夜项目,旨在了解在给定字母表的情况下将数字与任何基数进行相互转换。 要运行测试,请运行build.sh 。 我在没有 IDE 或依赖管理的情况下做到了这一点,因为我认为那会很有趣。 只有我、Java 和...
  • 否定的 使用负基数十进制到二进制数组。
  • 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制并输出的功能【实验题目内容】【实验环境】(使用的软件):VS - 2010 【实验题目内容】 保持计算机默认的十进制不变(要求不用C++流操纵符转换基数为...
  • dec2basemat(B,D)将十进制数转换为矩阵,其中每一行都是基B,其前导零代表D位总数。 如果没有第三个参数,则使用所有带有D位的B ^ D基数B。 dec2basemat(B,D,V)转换向量V中的那些十进制数字。
  • 十进制转换为b进制

    千次阅读 2019-06-08 13:03:32
    十进制转b进制 递归 package 进制转换; ...import java.util.Scanner;... public static void main(String[] args... System.out.print("请输入一个非负十进制数:"); long t1=System.currentTimeMillis(); Sc...
  • 十进制数n转换为r进制的方法是,n除以r取余数作为转换后的的最低位。若商不为0,则商继续除以r,取余数做最低位,直到商为0为止。 其中,对于16进制大于9的六个用A、B、C、D、E、F表示。将所得余数序列转换...
  • 传入参数:要转换的n(非负),要转换成的基数base 方法:根据除基取余的转换方式,将余数压入栈中,然后余数出栈,同时根据ascii编码转换为字符输出 代码: #include<iostream> using namespace std; ...
  • 十进制的转换与任意进制的互转

    千次阅读 2020-01-08 20:50:07
    十进制转任意进制时,将这个十进制数除以进制,比如2(也就是十进制转二进制),得到商和一个从0~1的余数,然后再以这个商为被除,除了进制2,继续得到商和一个从0~1的余数。以此方式不断相除,直到得到的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,553
精华内容 10,621
关键字:

十进制的数的基数是什么