进制转化(c 语言实现)

2023-10-29

部分进制转化(c 语言实现)

文章目录

  1. 二进制转化为其他进制数

  2. 十进制数转化为二进制数

一、二进制转化为其他进制数

  1. 因为我们要将二进制数转化为其他进制数,所以第一步就是要确保输入的值为二进制数。

    主要 是判断每一位数 要不是 1,要不是 0就可以

int InputNum(int n)			// 这个 n 可以定义在函数内部
{
    printf("请输入对应的二进制数\n");
    int num;
    scanf("%d", &n);
    num = n;
    while (num > 0)						
    {
        while (num % 10 != 0 && num % 10 != 1)	//判断 是否为 1 或是 0
        {
            printf("输入错误,请重新输入\n");
            scanf("%d", &num);
            if (num % 10 == 0 || num % 10 == 1)
            {
                break;
            }
        }
        num = num / 10;					// 第一位 为 二进制数时,判断第二位
    }
    return n;							//这个可以不写
}


2. 最后是主函数的编写

  由于二进制数转化为十进制数 的 方法为 如下图所示


  所以主函数的编写为:

int main()
{
    int remainder, number = 0, decimal_number = 0, temp = 1;
    number = InputNum(number);

    int n = number;

    // Iterate over the number until the end.
    while (number > 0)
    {
        remainder = number % 10;  
        number = number / 10;
        decimal_number += remainder * temp;
        temp = temp * 2;
    }

    printf("八进制数:%lo\n", decimal_number); //使用 c 语言自带的语法进行十进制转化为其他进制数
    printf("十进制数:%d\n", decimal_number);
    printf("十六进制数:%lx\n", decimal_number);
}

 上面的代码,我们使用了 lo lx 来转化 十进制 转化为 其他进制数,那么我们自己如何来实现呢?

 下面给出 二进制转化为八进制的方法。

 八进制 是由 三位 二进制数组成 (2^3 = 8)

int main(void)
{
    int binary_num, d = 0, base = 1, remainder, td, res = 0, ord = 1;

    printf("Enter the binary no: ");
    scanf("%d", &binary_num);			

    td = binary_num;

    while (td > 0)
    {
        d = 0, base = 1;
        for (int i = 0; i < 3; i++)			//每三位数计算 大小
        {
            remainder = td % 10;
            td /= 10;
            d += (base * remainder);
            base *= 2;
        }

        res += d * ord;  	// 实现 1*10 变成十位
        ord *= 10;

        td = td / 1000;		//减去三位数,一个八进制数为 三个 二进制数组成
    }
    printf("\nOctal equivalent is: %d", res);
    return 0;
}


 至于十六进制,这里就不给出具体方法了,2^4 = 16, 所以每 四 位二进制数可以转化为 一个十六进制数。

二、十进制数转化为二进制数

 十进制转化为二进制数的方法就是,对 2 求 余,再从下往上 写出即是 十进制对应的 二进制数

 原谅我,这画图工具实在没怎么用过。

 while (inputNumber > 0)
    {
        re = inputNumber % 2;				//对2 求余
        inputNumber = inputNumber / 2;		//换下一位数

        bits[i] = re;
        i++;
    }

    printf("\n the number in binary is: ");
	
    for (j = i - 1; j >= 0; j--)			//倒序写出
    {
        printf("%d", bits[j]);
    }

    if (i == 0)				//如果输入的 值为 0
    {
        printf("0");
    }

 至于其他进制转化,有兴趣可以自己去查找方法。我一般都是使用 先转化为 二进制再转化为 其他进制数。

最后

 有什么问题,欢迎在评论区指出,可以一起讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进制转化(c 语言实现) 的相关文章

随机推荐

  • 前端实现贪吃蛇小游戏-附源码详解

    前端实现贪吃蛇小游戏的详细代码和解释 首先 我们需要在 HTML 中添加一个画布元素 用于绘制游戏界面
  • Spring 版本

    Spring boot 2 4 9 spring cloud 3 0 1 alibaba 2021 1 dubbo registry address spring cloud 127 0 01 scan base packages XXX
  • PAT C入门题目-7-116 验证“哥德巴赫猜想” (20 分)(素数)

    7 116 验证 哥德巴赫猜想 20 分 数学领域著名的 哥德巴赫猜想 的大致意思是 任何一个大于2的偶数总能表示为两个素数之和 比如 24 5 19 其中5和19都是素数 本实验的任务是设计一个程序 验证20亿以内的偶数都可以分解成两个素
  • java casting意思,Java Casting方法不知道要转换的内容

    I was playing around with Java today and I noticed something weird Consider this code String foo cast hi int bar cast 1
  • 虚拟化原理以及应用(10)课堂笔记-第四章-开启第一台虚拟机

    第四章 开启第一台虚拟机 qemu kvm yum y install qemu kvm qemu kvm tools 一 使用基础管理工具qemu kvm创建第一台客户机 1 安装qemu kvm的工具包 yum y install qe
  • Android性能优化之卡顿优化

    一 什么是卡顿 APP使用起来卡顿 主要是用户在使用APP时的感知 主要表现在APP页面的刷新 滑动时的流畅度 例如用户在某个页面滑动时有明显卡住的现象就是卡顿了 开发中有一个16ms原则 即你的APP在16ms内没有更新完界面 用户就会有
  • eclipse 工具 在线插件安装,卸载,更新

    eclipse 在线安装 卸载更新插件 前言 一 安装插件 1 1 手动安装 eclipse sts3 spring tools suite 1 2 eclipse marketplace 安装 sts 4 二 卸载插件 以卸载 手动安装的
  • 用VS Code创建ASP.NET Core Razor Pages Web 应用:RpMoviesDemo。(DB First,连接MySql数据库)

    目录 一 使用Mac OS终端创建一个 Net Core Razor Pages Web 应用 二 使用VS Code的NuGet Package Manager GUI插件添加相关的NuGet程序集 三 在MySql数据库中创建Movie
  • vscode-verilog-testbench插件Linux-Ubuntu使用

    问题描述 在使用vscode编辑verilog时 有一些拓展需要我们去配置 其中比较复杂的是在linux环境下去配置verilog testbench 解决方案 首先先确认安装了python 其次需要把python指向为python3 具体
  • 宽带共享上网常见经典的问题

    1 共享宽带可以做什么 有什么好处 现在很多地方都开通了宽带网络 和过去的普通MODEM拨号上网相比 网络速度大大提高 而浏览网页 上网聊天这些一般的应用需要的网络带宽并不高 如果只是让一台计算机使用一条宽带连接 绝大部分网络带宽都被白白浪
  • HUAWEI CLOUD Stack 私有云解决方案(HCS)

    HUAWEI CLOUD Stack 私有云解决 HCS 注明 本文介绍的版本为HUAWEI CLOUD Stack 6 5 也叫华为云Stack或HCS 在华为6 5版本以前的名字是FusionCloud 6 3 最近更新的8 0版本不会
  • c语言软件放c盘还是d盘,一般软件应当安装到C盘还是D盘?

    软件安装始终会试占用空间越来越大 1 大多数软件运行时都会产生临时文件 日志文件等 长期使用后会使磁盘空间变小 2 另外机器上将会安装多少软件 其实你自己也不清楚 在使用一段时间后 你会时不时的安装些新软件 这样动态的增加软件数量 也会逐渐
  • 将dataframe里的两列元素一个作为key一个作为value转换成字典

    前面转发别人的内容 df 为dataframe对象 包含 word count 两列数据 方法一 result dic df groupby word count apply list to dict 对于同一个key对应多个value 则
  • Python的多进程实现

    原文链接 https www liaoxuefeng com wiki 1016959663602400 1017628290184064 要让Python程序实现多进程 multiprocessing 我们先了解操作系统的相关知识 Uni
  • medium_socnet靶机打靶过程和思考

    0x0内容简介 这是一个中等难度的靶机 比较的综合 因为其内部还有几个docker虚拟机 从而可以对内网部分有初步的涉及 比如内网信息收集 内网穿透 简单的横向移动等等 建议使用VirtualBox打开靶机 如果使用vm打开 会有无法预料的
  • 从C#中的ArrayList和List的区别说起

    引擎 Unity5 5 1 IDE VS2015 最近公司招人 自己整理了一套试题 题里设了几个坑 因为是招初级程序 关于ArrayList和List的区别的这道题 基本都翻了 原因很简单 这道题在所有网上能找到的Unity程序面试题中都有
  • ValueError: ('No requirements found', '# Horizon Core Requirements')的调试解决方法

    我在一台不能访问外网的CentOS6上从源码安装Openstack horizon grizzly版本的时候 碰到了如下的错误 root xxx horizon python setup py install running install
  • JS局部坐标和全局坐标的转换

    properties player cc Node background cc Node 将点击的点touchPoint 转化为player的父对象的相对节点 可以用来比较player坐标和点击坐标的相对位置 世界坐标 转化为 相对坐标 t
  • 小程序的数据接口

    微信小程序的数据请求 常用的数据请求方式 JS原生实现 第一种 let xhr new XMLHttpRequest xhr open xhr send 第二种 fetch 支持promise fetch 接口地址 then functio
  • 进制转化(c 语言实现)

    部分进制转化 c 语言实现 文章目录 二进制转化为其他进制数 十进制数转化为二进制数 一 二进制转化为其他进制数 因为我们要将二进制数转化为其他进制数 所以第一步就是要确保输入的值为二进制数 主要 是判断每一位数 要不是 1 要不是 0就可