精华内容
下载资源
问答
  • printf("请输入二进制数,输入#符号表示结束!\n"); scanf("%c", &c); // 以字符的形式 while( c != '#') // 从最高位开始压栈 { Push(&s, c); scanf("%c", &c); } getchar(); // 把回车'\n'从缓冲区去掉 ...
    #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;
    
    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;
    }
    
    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)=e;
    	s->top++;
    }
    
    void Pop(sqStack *s, ElemType *e)
    {
    	if(s->top == s->base)
    		return;
    	*e=*--(s->top);
    }
    
    int StackLen(sqStack s) //不会进行修改,直接传数据进来就行
    {
    	return (s.top - s.base); //指针相减,不是地址相减,而是指向元素的值//s是结构,使用点
    }
    
    int main()
    {
    	ElemType c, d;
    	sqStack s, n;
    	int len, len_n, i, j, sum=0, temp=0;
    	InitStack(&s);
    	InitStack(&n);
    	printf("请输入二进制数,输入#符号表示结束!\n");
    	scanf("%c", &c); // 以字符的形式
    	while( c != '#') // 从最高位开始压栈
    	{
    		Push(&s, c);
    		scanf("%c", &c);
    	}
    	getchar(); // 把回车'\n'从缓冲区去掉
    	len=StackLen(s);
    	printf("栈的当前容量是:%d\n", len);
    
    	for(i=0; i<len; i++)
    	{
    		Pop(&s, &c);
    		if((i+1)%3 != 0)
    		{
    			sum+=(c-'0')*pow(2, i%3);
    		}
    		else
    		{
    			sum+=(c-'0')*pow(2, i%3);
    			d=sum;
    			Push(&n, d);
    			sum=0;
    		}
    	}
    	if(len%3 != 0)
    	{
    		d=sum;
    		Push(&n, d);
    	}
    
    	len_n=StackLen(n);
    	printf("新栈的当前容量是:%d\n", len_n);
    	printf("转换为八进制数为:");
    	for(j=0; j<len_n; j++)
    	{
    		Pop(&n, &d);
    		printf("%o", d);
    	}
    	printf("\n");
    
    	return 0;
    }

    展开全文
  • Java程序二进制数与八进制相互转换在此程序中,您将学习使用Java中的函数将二进制数转换为八进制数,反之亦然。示例1:将二进制转换为八进制的程序在此程序中,我们将首先将二进制数字转换为十进制。然后,十进制...

    Java程序二进制数与八进制相互转换

    在此程序中,您将学习使用Java中的函数将二进制数转换为八进制数,反之亦然。

    示例1:将二进制转换为八进制的程序

    在此程序中,我们将首先将二进制数字转换为十进制。然后,十进制数字转换为八进制。

    public class BinaryOctal {

    public static void main(String[] args) {

    long binary = 101001;

    int octal = convertBinarytoOctal(binary);

    System.out.printf("%d 二进制 = %d 八进制", binary, octal);

    }

    public static int convertBinarytoOctal(long binaryNumber)

    {

    int octalNumber = 0, decimalNumber = 0, i = 0;

    while(binaryNumber != 0)

    {

    decimalNumber += (binaryNumber % 10) * Math.pow(2, i);

    ++i;

    binaryNumber /= 10;

    }

    i = 1;

    while (decimalNumber != 0)

    {

    octalNumber += (decimalNumber % 8) * i;

    decimalNumber /= 8;

    i *= 10;

    }

    return octalNumber;

    }

    }

    运行该程序时,输出为:101001 二进制 = 51 八进制

    此转换发生为:二进制到十进制

    1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 41

    十进制到八进制

    8 | 418 | 5 -- 1

    8 | 0 -- 5

    (51)

    示例2:将八进制转换为二进制的程序

    在此程序中,首先将八进制数从十进制转换为十进制。然后,将十进制数转换为二进制数。

    public class OctalBinary {

    public static void main(String[] args) {

    int octal = 67;

    long binary = convertOctalToBinary(octal);

    System.out.printf("%d in octal = %d 二进制", octal, binary);

    }

    public static long convertOctalToBinary(int octalNumber)

    {

    int decimalNumber = 0, i = 0;

    long binaryNumber = 0;

    while(octalNumber != 0)

    {

    decimalNumber += (octalNumber % 10) * Math.pow(8, i);

    ++i;

    octalNumber/=10;

    }

    i = 1;

    while (decimalNumber != 0)

    {

    binaryNumber += (decimalNumber % 2) * i;

    decimalNumber /= 2;

    i *= 10;

    }

    return binaryNumber;

    }

    }

    运行该程序时,输出为:67 in octal = 110111 二进制

    此转换发生为:八进制到十进制

    6 * 81 + 7 * 80 = 55

    十进制到二进制

    2 | 552 | 27 -- 1

    2 | 13 -- 1

    2 | 6  -- 1

    2 | 3  -- 0

    2 | 1  -- 1

    2 | 0  -- 1

    (110111)

    展开全文
  • C语言算法之将十进制数转换成二进制数

    万次阅读 多人点赞 2018-06-20 14:35:29
    导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数...

    导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数。

     

    先将源代码展示给大家:

    #include <stdio.h>
    void main()
    {
        //进制转换函数的声明
        int transfer(int x);
        int x;
        printf("请输入一个十进制数:");
        scanf("%d",&x);
        printf("转换成二进制数是:%d\n",transfer(x));
    }
    int transfer(int x)
    {
        int p=1,y=0,yushu;
        while(1)
        {
            yushu=x%2;
            x/=2;
            y+=yushu*p;
            p*=10;
            if(x<2)
            {
                y+=x*p;
                break;
            }
        }
        return y;
    }

    具体算法体现在函数体内,使用了一个while(1)的死循环,当结果产生后跳出循环。变量yushu是每一次循环内产生的余数,变量x每次循环都会被赋予新的值,这个新的值就是每一次循环内产生的商。当产生的商小于2时即产生了最后的结果(二进制数),然后跳出循环。

    例如:函数自变量若为7,用自变量7除以2,得到第一次循环产生的余数为1,第一次循环产生的商为3;用第一次循环产生的商3除以2,得到第二次循环产生的余数为1,第二次循环产生的商为1。

    变量y的存放也是有一定技巧的,由于每次产生的余数都小于2并且都是最后二进制数中需要按位展现出来的,因此每一次循环产生的余数都要合理地进行存放。第一次产生的余数放在个位,第二次产生的余数放在十位,第三次产生的余数放在百位......依次类推,直至某一次循环产生的商小于2,最后再把小于2的那个商放在最高位。变量p的作用就是控制位数,变量y的初始值定为0,变量p的初始值定为1,每次循环内变量p都自乘10,每次循环内都让变量y加上yushu*p,这样就实现了余数的按位存放。最后将小于2的那个商乘以p加到变量y中,得到最后的二进制数。

    例如:还是以自变量7为例,第一次循环后y的值为1,第二次循环内if语句之前y的值为11,if语句内y的值变为111,111即为7的二进制数。

    注意:变量p的自乘要放在变量y加上yushu*p之后!顺序不能颠倒!

    欢迎大家关注/订阅我的微信公众号Code Art Online,我会在我的公众号分享个人见闻,发现生活趣味;这里不仅有0和1,还有是诗和远方↓↓↓

    展开全文
  • 运用移位将十进制数转换成二进制数八进制数,十六进制数 提要:通过移位,求出对应位的数的值,用char保存 实现代码: public class Test { public static void main(String[] args) { toBinary(60); //...

    运用移位将十进制数转换成二进制数,八进制数,十六进制数

    提要:通过移位,求出对应位的数的值,用char保存
    实现代码:

    public class Test {
    
        public static void main(String[] args) {    
            toBinary(60);   //求二进制
            toOctal(60);//求八进制
            toHex(60);//求十六进制
        }
        public static void toBinary(int num){//求二进制
            char[] arr=trans(num,1,2);
            System.out.print("对应二进制为:");
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]);
            }
            System.out.println();
        }
        public static void toOctal(int num){//求八进制
            char[] arr=trans(num,7,3);
            System.out.print("对应八进制为:");
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]);
            }
            System.out.println();
        }
        public static void toHex(int num){//求八进制
            char[] arr=trans(num,15,4);
            System.out.print("对应十六进制为:");
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]);
            }
        }
        public static char[] trans(int num,int m,int n){
            char[ ] chs={'0','1','2','3',//数组容器,固定值恰好对应有下标
                              '4','5','6','7',
                              '8','9','A','B',
                              'C','D','E','F',
                               };
            char[] arr1 = new char[8];
            int pos=arr1.length;
            while(num!=0){
                int temp=num&m;
                arr1[--pos]=chs[temp];
                num = num >>>n;
            }
            int k=arr1.length-pos;
            char[] arr2 = new char[k];
            for(int i=0;i<k;i++){
                arr2[i]=arr1[pos];
                pos++;
            }
            return arr2;
        }   
    }
    

    输出结果:
    对应二进制为:110
    对应八进制为:74
    对应十六进制为:3C

    展开全文
  • 进制转换 问题描述  编写函数将十进制整数按8进制输出,然后编写... 输出这个整数的八进制形式。 样例输入 12 样例输出 014 数据规模和约定  输入的整数n>=0. 代码 package 进制; import java.uti...
  • //用栈实现进制转换十进制转换成:二进制数八进制数、十六进制数#include<stdio.h>//进制转换 实现十进制转换成:二进制数八进制数、十六进制数#include<malloc.h>#include<process.h>#define...
  • 进制数转八进制数 先将十进制数转换为二进制数,然后从末位开始,以每三位为一组,前面不够三位补0,然后按照二进制转十进制的方法依次算出每三位的值,所得结果按顺序输出即为十六进制的形式。 十进制数转十六...
  • Hello,大家好,我是wangzirui32,今天我们将学习如何将十进制数转换为二进制八进制,十六进制数。 学习目录1. 转换二进制2. 转换八进制3. 转换十六进制 1. 转换二进制 # 任意进制转换为二进制 new_number = bin...
  • 把任意一个十进制数转换为二进制八进制十六进制数的c++源代码
  • 用数据结构栈实现的数制转换,将十进制数转换为二进制八进制,十六进制。
  • 一、R进制转换为十进制 ...2.八进制转十进制: (140)8=1x82+4x81+0x80=(96)10 3.十六进制十进制: (A2C)16=10x162+2x161+12x160=(2604)16 、十进制转换为R进制 将十进制转换为R进制时,...
  • kotlin 二进制Given a number in binary number system format, we have to convert it into... 给定二进制数制格式的数字,我们必须将其转换为八进制数制格式。 Example: 例: Input: num = 1001010111 O...
  • 进制转换二进制转八进制Prerequisite: Number systems 先决条件: 数字系统 To convert binary numbers into octal numbers, we first have to understand the ... 要将二进制数转换为八进制数 ,我们首先必须...
  • java_十进制数转换为二进制,八进制,十六进制数的算法
  • 算法提高 十进制数转八进制数 时间限制:1.0s 内存限制:512.0MB 编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。 ...
  • kotlin 二进制Given a number in octal number system format, we have to convert it into... 给定八进制系统格式的数字,我们必须将其转换为二进制数系统格式。 Example: 例: Input: num = 123 Output:...
  • 进制数八进制、十六进制、二进制转换,从文件中读取,向文件中输出
  • 两题搞定进制转换(1)二进制转八进制和十六进制(2)十进制转二进制数注意!!! 1.进位计数法       所谓进位计数法是一种计数方法,咱们最常用的莫过于十进制了,除此之外还有八...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,892
精华内容 1,556
关键字:

二进制数转八进制数