精华内容
下载资源
问答
  • 二进制转换为八进制或十六进制

    千次阅读 2017-05-21 21:18:50
    二进制转换为八进制  #3位二进制数按权展开相加得到1位八进制数。注:3位二进制转成八进制是从右到左开始转换,不足时补0。  示 例:把二进制数1001 0110转换为八进制数   即二进制数1001 0110转为后为八...

    》二进制转换为八进制

        #3位二进制数按权展开相加得到1位八进制数。注:3位二进制转成八进制是从右到左开始转换,不足时补0。

        示   例:把二进制数1001 0110转换为八进制数


        即二进制数1001 0110转为后为八进制数226。


    》八进制转换为二进制

        #八进制数通过除以2取余,余数倒序排列得到二进制数每个八进制数对应3个二进制数,不足时在最左边补零

        示   例:把八进制数226转换为二进制数


       即八进制数226转换后为二进制数1001 0110,注:位长为8,所以左边第一位的0舍去。


    》二进制转换为十六进制

        #与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。注:4位二进制转成十六进制是从右到左开始转换,不足时补0。

        示   例:把二进制数101 0111 1101转换为十六进制数


       即二进制数101 0111 1101转换后为十六进制数57D,注:字母不区分大小写。


    》十六进制转换为二进制

        #十六进制数通过除以2取余,余数倒序排列得到二进制数每个十六进制数对应4个二进制数,不足时在最左边补零

        示   例:把十六进制数57D转换成二进制数


       即十六进制数57D二进制数转换后为0101 0111 1101

    展开全文
  • 二进制转换为八进制-栈方式实现

    千次阅读 2019-10-07 13:48:12
    文章目录二进制转换为八进制 二进制转换为八进制二进制转换为八进制,需要使用两个栈,一个栈用于存储二进制数据,另一个栈用于存储八进制数据。 ​ 每三个二进制数据代表一个八进制数据。因此,需要弹出三个二...

    二进制转换为八进制

    ​ 二进制转换为八进制,需要使用两个栈,一个栈用于存储二进制数据,另一个栈用于存储八进制数据。

    ​ 每三个二进制数据代表一个八进制数据。因此,需要弹出三个二进制数据并将其转换为对应的八进制,然后在将八进制数据压栈。

    /**********************************************************
     * @ 二进制转换为八进制 
     * 二进制转换为八进制,需要两个栈来实现,一个栈用于存储二进制数,
     * 另一个用于存储八进制数,二进制的每三位代表八进制的一位,弹出二进制
     * 的三位将其转换为八进制放入到八进制的栈中
     *********************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define STACK_INIT_SIZE 20
    #define STACKINCREMENT  10
    
    typedef char ElemType;
    typedef struct
    {
        ElemType *base;
        ElemType *top;
        int stackSize;
    }sqStack;
    
    /**
     * @brief  初始化栈
     * @note   
     * @param  *s: 栈的地址
     * @retval None
     */
    void InitStack(sqStack *s);
    
    /**
     * @brief  压栈操作
     * @note   
     * @param  *s: 栈的地址
     * @param  e: 压栈的数据
     * @retval None
     */
    void Push(sqStack *s, ElemType e);
    
    /**
     * @brief  出栈操作
     * @note   
     * @param  *s: 栈的地址
     * @param  *e: 出栈的元素
     * @retval None
     */
    void Pop(sqStack *s, ElemType *e);
    
    
    /**
     * @brief  计算栈的长度
     * @note   
     * @param  s: 栈
     * @retval 
     */
    int StackLen(sqStack s);
    
    // 函数功能:初始化栈
    // 参数*s:栈的地址
    void InitStack(sqStack *s)
    {
        s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
        if( !s->base )
        {
            exit(0);
        }
    
        s->top = s->base;
        s->stackSize = STACK_INIT_SIZE;
    }
    
    // 函数功能:入栈操作
    // 参数*s:栈的地址
    // 参数e:待压入栈的元素
    void Push(sqStack *s, ElemType e)
    {
        if( s->top - s->base >= s->stackSize )
        {
            s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType));
            if( !s->base )
            {
                exit(0);
            }
    
            s->top = s->base + s->stackSize;
            s->stackSize = s->stackSize + STACKINCREMENT;
        }
    
        *(s->top) = e;
        s->top++;
    }
    
    // 函数功能:弹栈操作
    // 参数*s:栈的地址
    // 参数e:存放从栈里弹出的数据
    void Pop(sqStack *s, ElemType *e)
    {
        if( s->top == s->base )
        {
            return;
        }
        *e = *--(s->top);
    }
    
    // 函数功能:计算栈s的当前长度
    // 参数s:栈
    int StackLen(sqStack s)
    {
        return (s.top - s.base);
    }
    
    int main()
    {
        ElemType c;
        sqStack s1;
        sqStack s2;
        int len, i, j, sum = 0;
    
        InitStack(&s1); // 初始化栈s1,用来存放二进制输入
    
        printf("请输入二进制数,输入‘#’号表示结束!\n\n");
        scanf("%c", &c);
        while( c != '#' )
        {
            if( c=='0' || c=='1' )  // 检查输入是否二进制
                Push(&s1, c);
            scanf("%c", &c);
        }
        getchar();      // 把'\n'从缓冲区去掉
        len = StackLen(s1);
        printf("二进制栈的大小为: %d\n", len);
    
        InitStack(&s2); // 初始化栈s2,用来存放转换的八进制
    
        for( i=0; i < len; i+=3 )
        {
            for( j=0; j < 3; j++ )
            {
                Pop( &s1, &c ); // 取出栈顶元素
                sum = sum + (c-48) * pow(2, j);
    
                if( s1.base == s1.top )
                {
                    break;
                }
            }
    
            Push( &s2, sum+48 );
            sum = 0;
        }
    
        printf("\n转化为八进制数是: ");
        while( s2.base != s2.top )
        {
            Pop( &s2, &c );
            printf("%c", c);
        }
        printf("(O)\n");
    
        return 0;
    }
    
    
    展开全文
  • C语言二进制转换为八进制C语言二进制转换为八进制完整源码 C语言二进制转换为八进制完整源码 #include <stdio.h> // Function that returns the last three digits int three_digits(int n) { int r, d = 0,...

    C语言二进制转换为八进制

    C语言二进制转换为八进制完整源码

    #include <stdio.h>
    
    // Function that returns the last three digits
    int three_digits(int n)
    {
       
        int r, d = 0, p = 1
    展开全文
  • 值得注意的是,存放二进制的数组...二进制转换为八进制是非常简单的,因为每三个二进制就是一位八进制.如果不足三位二进制则补0. 例如: 10101 –>010 101 –>25 1101 –> 001 101 –> 15 思路有了,接下来就是把思路转

    值得注意的是,存放二进制的数组最后一位才是二进制的第一位,例如:char bin[5]=”1100”,那么bin[3] 才是二进制的第一位.

    1.二进制–>八进制
    二进制转换为八进制是非常简单的,因为每三个二进制就是一位八进制.如果不足三位二进制则补0.
    例如: 10101 –>010 101 –>25
    1101 –> 001 101 –> 15
    思路有了,接下来就是把思路转换为代码写出来即可.

    代码如下:

    long long BinToOct(char* bin)
    {
        long long oct = 0;    //八进制
        char* b = bin;        
        int a = 0, p = 0;
        int i = 0, iLen = 0, k = 0;
        while (*b++) ++iLen;    //计算二进制的长度
        while (iLen--)
        {
            a += powl(2, k++) * (bin[iLen] - '0');
            if (k % 3 == 0) //每三位二进制就是一位八进制(a就是一位八进制)
            {
                oct += powl(10, p++)*a;
                a = 0;
                k = 0;
            }
        }//如果最后没有构成三位二进制,则不会进入到if语句,也就是会少加一次,这里要补回来
        return oct += powl(10, p++)*a;;
    }

    注意:这个函数最大支持57位2进制的转换
    2.二进制 –> 十进制
    这个就太简单了,直接求权值和就行了

    long long BinToDec(char* bin)
    {
        long long dec = 0;
        char* b = bin;
        int iLen = 0, p = 0;
        while (*b++) ++iLen;
        while (iLen)
            dec += powl(2, p++)*(bin[--iLen] - '0');
        return dec;
    }

    注意:最大支持63位2进制的转换
    3.二进制 –> 十六进制
    这个的思路和八进制一样,只不过这里是4个为一组

    void BinToHex(char* bin, char* hex, int n = 20)
    {
        char a[17] = "0123456789ABCDEF";
        char* temp = (char*)malloc(n);
        memset(temp, 0, n);
        char* b = bin;
        int iLen = 0;
        int i = 0, k = 0, q = 0;
        while (*b++) ++iLen; 
        while (iLen)
        {
            q += powl(2, k++)*(bin[--iLen] - '0');
            if (k % 4 == 0)
            {   //假设第一组二进制位1010,所以q=10,a[10] == 'A'
                temp[i++] = a[q];
                q = 0;
                k = 0;
            }
        }
        if ((i % 4 && q) || i == 0)//防止k!=4漏加了一个
            temp[i++] = a[q];
        k = 0;
        while (i)
            hex[k++] = temp[--i];//反转过来
        free(temp);
    }

    参数n = 20 是缺省值,C++才支持,为什么我要这样写呢?因为二进制和十六进制都是用数组保存的,所以,它们之间的转换没有限制,所以我用了动态分配内存,而大小就是传进来的n.

    展开全文
  • 三位一并法: 因为2 3=8,所以三位二进制数位相当于一个八进制数位...然后每三位二进制数用相应的八进制码(0~7)表示,即完成二-八转换工作例1 将(101010001.001)2转换八进制数 首先以小数点中心,分别...
  • 十进制整数转换二进制采用“除2倒取余”,十进制小数转换二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 ...
  • //题目:八进制转换为十进制 #include<stdio.h> #include<math.h> int main() { int i=0,n,tmp,sum=0; scanf("%d",&n); while(n) { tmp=n%10; n=n/10; sum+=tmp*pow(8,i); i++;...
  • 进制转换二进制八进制Prerequisite: Number systems 先决条件: 数字系统 To convert binary numbers into octal numbers, we first have to understand the relationship between binary and octal numbers. ...
  • 二进制八进制、十六进制转换为十进制 二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是N进制,那么: 对于整数部分,从右往左看,第i位的位权...
  • 二进制 十六进制 八进制 转换 教程
  • C语言实现二进制向八进制和十六进制转换 二进制转换成十进制 再将十进制转换成R进制
  • 进制间转换 进制转换 二进制与十进制 八进制 十六进制转换
  • 超强进制转换工具 二进制 八进制 十进制 十六进制转换
  • 二进制 二进制就是计算机常用的进制,即逢二进一。例如:1010 八进制 八进制即逢八进一。例如:626 ...十进制就是我们在计算中常用的进制,所以就...1.二进制八进制二进制数10010110举例 首先需要3个二进...
  • 二进制 十进制 八进制 十六进制 之间的相互转换的具体实现
  • C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
  • c语言二进制转换八进制

    千次阅读 2018-12-30 15:46:03
    二进制转换为八进制 把要转换的二进制数按照3位一组从右边往左边分组。不足3位的在左边补上0 111001111001=001 110 001 111 001 #include&lt;stdio.h&gt; #define MAX 1024  /*****************往左补...
  • 进制转换为八进制或十六进制

    千次阅读 2017-05-22 14:25:05
     #间接转换:先将十进制转换成二进制,然后在由二进制转换八进制。  #将十进制数除以8取余,直到商为0或1时停止,然后把余数倒序排列。  示 例:将十进制数50转换成八进制数  将余数倒序排列后,即十进制数...
  • 三位二进制最小是000,最大是111,其范围恰好在0-7,构成了八进制一位。 八进制,Octal,缩写OCT或O,一种以8基数的计数法,采用0,1,2,3...为了将一个二进制数换算为八进制,只需将二进制串划分成每三个位一组...
  • 数制及相互转换一、单选题1、下列数据中数值最小的是A、01110000BB、249DC、125QD、AAH2、下列数据中数值最大的...转换二进制数是A、11100B、11010C、11000D、101005、下列数据中数值最小的是A、11110000(二进制)B...
  • 二进制转换

    2017-12-08 10:07:19
    二进制转换八进制十六进制,八进制十六进制转换二进制
  • '把十进制数转换为二进制数' result = "" num = int(input("请输入一个十进制")) #验证结果 print(bin(num)) while(not(num == 0)): ret = num %2 num = num/2 result = str(ret) + result ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 142,681
精华内容 57,072
关键字:

二进制怎么转换为八进制