精华内容
下载资源
问答
  • 十进制转换成八进制

    2014-09-28 01:22:06
    栈的应用举例,由于没给出完整源码,自己写了一个比较完整的
  • 主要介绍了使用Python内置函数:bin()、oct()、int()、hex()可实现进制转换的一些用法,需要的朋友可以参考下
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是...

    进制转换:二进制、八进制、十六进制、十进制之间的转换

    不同进制之间的转换在编程中经常会用到,尤其是C语言。

    将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

    假设当前数字是N进制,那么:

    对于整数部分,从右往左看,第i位的位权等于Ni-1

    对于小数部分,恰好相反,要从左往右看,第j位的位权为N-j

    更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是1,那么它所表示的数值大小就是该位的位权。

    1) 整数部分

    例如,将八进制数字53627转换成十进制:

    53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

    从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    注意,这里我们需要以十进制形式来表示位权。

    再如,将十六进制数字9FA8C转换成十进制:

    9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

    从右往左看,第1位的位权为160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… n位的位权就为16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    将二进制数字转换成十进制也是类似的道理:

    11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

    从右往左看,第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4,第4位的位权为23=8,第5位的位权为24=16 …… n位的位权就为2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    2) 小数部分

    例如,将八进制数字423.5176转换成十进制:

    423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… m位的位权就为 8-m

    再如,将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… m位的位权就为 2-m

    更多转换成十进制的例子:

    二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

    二进制:101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

    八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

    八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

    十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

    将十进制转换为二进制、八进制、十六进制

    将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

    1) 整数部分

    十进制整数转换为N进制整数采用“N取余,逆序排列”法。具体做法是:

    N作为除数,用十进制整数除以N,可以得到一个商和余数;

    保留余数,用商继续除以N,又得到一个新的商和余数;

    仍然保留余数,用商继续除以N,还会得到一个新的商和余数;

    ……

    如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。

    把先得到的余数作为N进制数的低位数字,后得到的余数作为N进制数的高位数字,依次排列起来,就得到了N进制数字。

    下图演示了将十进制数字36926转换成八进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151J30K46.png

    从图中得知,十进制数字36926转换成八进制的结果为110076

    下图演示了将十进制数字42转换成二进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151K641Z0.png

    从图中得知,十进制数字42转换成二进制的结果为101010

    2) 小数部分

    十进制小数转换成N进制小数采用“N取整,顺序排列”法。具体做法是:

    N乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

    将积的整数部分取出,再用N乘以余下的小数部分,又得到一个新的积;

    再将积的整数部分取出,继续用N乘以余下的小数部分;

    ……

    如此反复进行,每次都取出整数部分,用N接着乘以小数部分,直到积中的小数部分为0,或者达到所要求的精度为止。

    把取出的整数部分按顺序排列起来,先取出的整数作为N进制小数的高位数字,后取出的整数作为低位数字,这样就得到了N进制小数。

    下图演示了将十进制小数0.930908203125转换成八进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91Q20520335.png

    从图中得知,十进制小数0.930908203125转换成八进制小数的结果为0.7345

    下图演示了将十进制小数0.6875 转换成二进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91QHI2I2.png

    从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011

    如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

    十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345

    十进制数字 42.6875 转换成二进制的结果为 101010.1011

    下表列出了前17个十进制整数与二进制、八进制、十六进制的对应关系:

    十进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    二进制

    0

    1

    10

    11

    100

    101

    110

    111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    10000

    八进制

    0

    1

    2

    3

    4

    5

    6

    7

    10

    11

    12

    13

    14

    15

    16

    17

    20

    十六进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    A

    B

    C

    D

    E

    F

    10

    注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

    十进制0.51对应的二进制为0.100000101000111101011100001010001111010111...,是一个循环小数;

    十进制0.72对应的二进制为0.1011100001010001111010111000010100011110...,是一个循环小数;

    十进制0.625对应的二进制为0.101,是一个有限小数。

    二进制和八进制、十六进制的转换

    其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919102I0949.png

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674

    八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919103A2R7.png

    从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919104H9539.png

    从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C

    十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F91910553H50.png

    从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110

    C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    展开全文
  • C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
  • 实验目的:1、掌握栈的逻辑结构及存储结构;...完成数字十进制八进制的转换。 输入示例: 请输入需转换的数的个数: 3 请输入需转换的数: 28,58,190 输出示例: 转换结果为: 1、 34 2、 72 3、 276
  • 这篇文章主要介绍了使用Python内置函数:bin()、oct()、int()、hex()可实现进制转换的一些用法,需要的朋友可以参考下 使用Python内置函数:bin()、oct()、int()、hex()可实现进制转换。 先看Python官方文档中对这几...
  • 主要介绍了python十进制和二进制的转换方法(含浮点数),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了十进制负数转换为二进制、八进制、十六进制的知识分享,需要的朋友可以参考下
  • python十进制转二进制 python中十进制转二进制使用 bin() 函数。 bin() 返回一个整数 int 或者长整数 long int 的二进制表示。 下面是使用示例: >>>bin(10) '0b1010' >>> bin(20) '0b10100' 补充:十进制转8进制和...
  • 一、绪论 十六进制(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 就是需要把十进制转换为哪种进制数。

    展开全文
  • 1.1.二进制转十进制: 函数:bindec(string $binary_string) @param $binary_string 参数表示所要转换的二进制字符串。 @return 返回与$binary_string参数所表示的二进制数的十进制数等价值。 函数说明: bindec()...
  • 用数据结构中的栈实现十进制转换成八进制
  • Java实现算法提高十进制转八进制

    万次阅读 多人点赞 2019-06-06 21:06:38
    算法提高 十进制转八进制数 时间限制:1.0s 内存限制:512.0MB 编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。 样例输入 ...

    算法提高 十进制数转八进制数
    时间限制:1.0s 内存限制:512.0MB

    编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。

    样例输入
    9274
    样例输出
    22072
    样例输入
    18
    样例输出
    22

    进制转换详细介绍

    import java.util.Scanner;
    
    
    public class 十进制转八进制 {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int num = sc.nextInt();
    		String shu = Integer.toOctalString(num);
    		System.out.println(shu);
    	}
    
    }
    
    
    展开全文
  • 该资源是用于将十进制数转换为八进制数的程序,编程语言为c#,程序简单易懂,便于实用。
  • 本文主要介绍了十进制转二进制;十进制转八进制十进制转十六进制的方法,具有很好的参考价值,下面跟着小编一起来看下吧
  • 输入一个十进制数可以转化成二进制,八进制,十六进制。.java格式的右键编辑可以打开。
  • C语言实现十进制转换成二十六进制的转换,代码已经经过调试可以使用,放心下载!
  • 也就是说按普通的思路来做,先十进制再转换成八进制会报错, 但是这里直接采取格式话输出是成功的,可能是系统的Bug. 题目要求: 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定n个十六进制正整数,...
  • 主要介绍了Python中不同进制互相转换,本文讲解了二进制、八进制十进制和十六进制的相与转换实现代码,需要的朋友可以参考下
  • python input函数进制转换 ... s=int(input(),8) #输入八进制并将其转换为十进制 s=int(input(),2) #输入二进制并将其转换为十进制 通过格式化符号进行转化 这里用输入一个十六进制的数为例子 n=int(input(),
  • 数据结构中简单的进制转换问题,不会的童鞋看过来~~~
  • 十进制转化为八进制的算法Converting a number from Decimal to Octal is almost similar to converting Decimal into Binary, although just one difference is that unlike Binary conversion, here in an ...

    将十进制转化为八进制的算法

    Converting a number from Decimal to Octal is almost similar to converting Decimal into Binary, although just one difference is that unlike Binary conversion, here in an integral part, we successively divide the number by 8 until the quotient is 0 (the last remainder becomes the MSB). The remainders read from bottom to top give the equivalent octal integer number. and in the fractional part, we multiply it by 8 till the fractional part of the product is 0. The first integer in the product term gives the MSB, thus the integers read from top to bottom gives the equivalent octal fraction.

    将数字从十进制转换为八进制几乎类似于将十进制转换为二进制 ,尽管唯一的区别是与二进制转换不同,在整数部分中,我们将数字连续除以8直到商为0(最后的余数变为MSB)。 从下到上读取的余数给出等效的八进制整数。 在小数部分中,我们将其乘以8,直到乘积的小数部分为0。乘积项中的第一个整数给出MSB,因此从上到下读取的整数给出等效的八进制小数。

    Same as in decimal to binary conversion, to convert a mixed decimal number into octal, we first separate the integral and the fractional part and then convert them into octal individually, after converting both to octal separately, we combine them back together to get the desired result.

    十进制转换为二进制一样要将混合的十进制数转换为八进制 ,我们首先将整数和小数部分分离,然后将它们分别转换为八进制,分别将其转换为八进制后,将它们组合在一起即可得到所需的值结果。

    Example 1:

    范例1:

    Convert (73.625)10 to ( ? )8

    将(73.625) 10转换为(?) 8

    Solution:

    解:

    Firstly, we will separate the integral part (73)8 and the fractional part (0.625)8. Now, we will convert each of them to octal individually.

    首先,我们将积分部分(73) 8和小数部分(0.625) 8分开。 现在,我们将它们分别转换为八进制。

    Integral Part

    整体部分

    DivisorQuotientRemainder
    873
    891 LSB
    811
    801 MSB
    除数
    8 73
    8 9 1 LSB
    8 1个 1个
    8 0 1个MSB

    All the remainders read from top to bottom, where topmost is the LSB and bottom one is the MSB.

    所有其余部分从上至下读取,其中最高的是LSB,最低的是MSB。

    Therefore, (73)10 = (111)8

    因此,(73) 10 =(111) 8

    Fractional Part

    小数部分

        0.625 * 8 = 5.000
    
    

    The integer part of the product term read from top to bottom forms the equivalent octal number i.e., (.625)10 = (0.5)8

    从上到下读取的乘积项的整数部分形成等效的八进制数,即(.625) 10 =(0.5) 8

    After converting both integral part and fractional part individually into octal, now we combine both to get our desired result i.e., (73.625)10 = (111.5)8

    将整数部分和小数部分分别转换为八进制后,现在我们将两者合并以获得所需的结果,即(73.625) 10 =(111.5) 8

    Example 2:

    范例2:

    Convert (965.198)10 to ( ? )8

    将(965.198) 10转换为(?) 8

    Solution:

    解:

    Integral Part

    整体部分

    DivisorQuotientRemainder
    8965
    81205 LSB
    8150
    817
    801 MSB
    除数
    8 965
    8 120 5 LSB
    8 15 0
    8 1个 7
    8 0 1个MSB

    The remainders read from bottom to top gives the equivalent octal number i.e., (965)10 = (1705)8.

    从下到上读取的余数给出等效的八进制数,即(965) 10 =(1705) 8

    Fractional Part

    小数部分

        0.198 * 8 = 1.584	MSB
        0.584 * 8 = 4.672
        0.672 * 8 = 5.376
        0.376 * 8 = 3.008
        0.008 * 8 = 0.064
        0.064 * 8 = 0.512	LSB
    
    

    The integer part of the product term read from top to bottom forms the equivalent octal number i.e., (0.198)10 = (0.145300)8.

    从上到下读取的乘积项的整数部分形成等效的八进制数,即(0.198) 10 =(0.145300) 8

    After converting both integral part and fractional part individually into octal, now we combine both to get our desired result i.e., (965.198)10 = (1705.145300)8

    将整数部分和小数部分分别转换为八进制后,现在我们将两者合并以获得所需的结果,即(965.198) 10 =(1705.145300) 8

    Example 3:

    范例3:

    Convert (296.225)10 to ( ? )8

    将(296.225) 10转换为(?) 8

    Solution:

    解:

    Integral Part

    整体部分

    DivisorQuotientRemainder
    8296
    8370 LSB
    845
    804 MSB
    除数
    8 296
    8 37 0 LSB
    8 4 5
    8 0 4个MSB

    The remainders read from bottom to top gives the equivalent octal number i.e., (296)10 = (450)8.

    从下到上读取的余数给出等效的八进制数,即(296) 10 =(450) 8

    Fractional Part

    小数部分

        0.225 * 8 = 1.80    MSB
        0.80  * 8 = 0.64
        0.64  * 8 = 5.12
        0.12  * 8 = 0.96
        0.96  * 8 = 7.68     LSB
    
    

    The integer part of the product term read from top to bottom forms the equivalent octal number i.e., (0.198)10 = (0.10507)8.

    从上到下读取的乘积项的整数部分形成等效的八进制数,即(0.198) 10 =(0.10507) 8

    After converting both integral part and fractional part individually into octal, now we combine both to get our desired result i.e., (296.225)10 = (450.10507)8.

    在将整数部分和小数部分分别转换为八进制之后,现在我们将两者合并以获得所需的结果,即(296.225) 10 =(450.10507) 8

    翻译自: https://www.includehelp.com/basics/conversion-of-decimal-number-system-into-octal-number-system.aspx

    将十进制转化为八进制的算法

    展开全文
  • 本文主要介绍的是VB的十进制八进制,十六进制,二进制相互转换大全
  • 来看看十进制转八进制,有两种方法:直接法与间接法,先看直接的方法,与十进制转成二进制相同,咱们还是分整数部分转换和小数部分转换。 整数部分,除8取余法,每次将整数部分除以8,余数为该位权上的数,商...
  • 试题 算法训练 十进制转八进制

    千次阅读 2020-04-18 23:34:53
     编写函数把一个十进制数输出其对应的八进制数。 样例输入 9274 样例输出 22072 资源限制 时间限制:1.0s 内存限制:512.0MB 思路: 使用一个字符串存储每位八进制数,使用一个while循环分别求出每位对应的八进制数...
  • 刚接触c语言,第一次写博客,是关于进制转换的,希望能帮到大家,如有不足,请各位大神道明,c语言的路上一个人蒙头前行肯定走不远,希望能跟各位交个朋友,交流点经验,相互学习,互相帮助。
  • 以下程序的输出结果是 main(){ int a=20; printf("%d,%o,%x\n",a,a,a);...1.题目给出了 a=20这个十进制现在我们需要用十进制转八进制,这里我们采用的就是直接除8取余的方法 2.同理对于10进制16进制我们也是...
  • java代码-将八进制数转换为十进制
  • (C++)用栈实现十进制转八进制

    千次阅读 2018-08-06 18:41:19
    十进制转换到八进制采用的是除R取余法。将十进制整数除于连续除于R取余数,直到商为0,余数从右到左排列,首次取得的余数排在最右。 将十进制225转换为八进制,答案为341。 代码: //数组实现的栈 #include&lt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 156,903
精华内容 62,761
关键字:

十进制168转八进制