【C 语言】习题 1 - 用代码将二进制转换为十进制

news2024/9/24 19:25:05

目录

1、缘起

2、算法描述       

3、代码清单

4、相关知识点

5、总结


1、缘起

        我以前计算二进制转换为十进制的时候,喜欢用笔算,或者电脑在手旁的时候,用电脑自带的程序员计算器进行计算。今天兴起,突然想写一个代码用于计算二进制转换为十进制,不写不知道,一写吓一跳。本来想着这个算法挺简单的,但真正去上手撸代码的时候,却发现事情没有想象的那么简单。

        各位读者,你们先不要看下文,自己先去构思这个算法应该怎么实现,然后再去手撸一下代码,有困惑的时候再来看看本文,你会发现本文的精妙所在。一定要经过大脑的思考,不然看了也是白搭。

2、算法描述       

        程序首先提示用户输入一个二进制数,然后使用 while 循环 将其转换为十进制数。在循环中,程序使用 模运算符(%)除法运算符(/)获得二进制数的每个数字,并使用 pow 函数 计算每个数字所代表的十进制数值。最后,程序将这些值相加,得到二进制数的十进制等价。最后,程序打印出十进制数的值。

注意:在输入二进制数之前,请确保使用的是 long long 类型,以防止二进制数太大而导致溢出。

3、代码清单

#include <stdio.h>
#include <math.h>

int main() 
{
    //声明一个二进制数变量,用于存储用户输入的二进制数。
    long long binary_number;

    //定义一个十进制数变量,用于存储转换后的十进制数
    int decimal_number = 0;
       
    //声明一个余数变量,用于存储每次计算二进制数的余数
    int remainder;

    //定义一个自增变量,用于记录当前位数的值
    int i = 0;

    printf("请输入一个二进制数:");
    scanf("%lld", &binary_number);

    while (binary_number != 0)
    {
        //获得二进制的每位数字
        remainder = binary_number % 10;

        binary_number = binary_number / 10;

        //计算每个数字所代表的十进制数值,最后,程序将这些值相加
        decimal_number += remainder * pow(2, i);

        i++;
    }

    printf("转换为十进制数为:%d\n", decimal_number);

    system("pause");
    return 0;
}

关键代码解释: 

        这是一个 while 循环,它会 一位一位地处理二进制数,直到将整个二进制数转换成十进制数。循环中的过程如下:

  • 通过 取余运算 获得二进制数的最低位数字,并将其存储到 remainder 变量中。
  • 二进制数除以 10,去掉最低位数字。
  • 通过 remainderi 计算出当前位数所代表的十进制数值,并将其加到 decimal_number 变量中。
  • i 变量加 1,以处理下一位数字。

循环重复执行以上过程,直到 binary_number 变量的值变成 0。

4、相关知识点

        在 C 语言中,pow() 函数 用于 计算一个数的幂。它接受两个参数,第一个参数是 底数,第二个参数是 指数,返回值是 底数的指数次幂

double pow(double x, double y);
  • 其中,x 是底数,y 是指数,返回值是 xy 次幂。

例如,要计算 2 的 3 次幂,可以这样写: 

#include <stdio.h>
#include <math.h>

int main()
{
    double result = pow(2, 3);

    printf("2 raised to the power of 3 is: %f\n", result);

    return 0;
}

        需要注意的是,pow() 函数的返回值类型是 double,如果想要计算整数次幂,可以将指数转换为 double 类型进行计算。此外,在计算浮点数次幂时,可能会出现精度问题,需要注意。 

5、总结

        上述代码用了一个非常巧妙的思想,我直呼大为震惊。计算机把输入的值当做十进制来处理,然后对其 取余取除 操作,取出其中的每一位数值,然后 一位一位地处理 "二进制数"(其实是 0 和 1 这样的十进制数)。将其取出的每一位数值乘以二进制相对应位置的 权重,得到每位二进制所对应的十进制,然后将其每位二进制所对应的十进制进行相加,得到一串二进制数的十进制数。

        本期的分享总结就到这里了,如果有疑问的小伙伴,我们评论区交流嗷,笔者必回,我们下期再见啦 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bootstrap框架实战:轻松搭建响应式网站

Bootstrap 是一款非常受欢迎的前端开发框架&#xff0c;它可以帮助我们轻松地搭建响应式网站。在这篇文章中&#xff0c;我们将介绍如何使用 Bootstrap 框架创建一个简单的响应式网站&#xff0c;并了解其核心概念和组件。 1. Bootstrap 简介 Bootstrap 是由 Twitter 公司的开…

字节码插桩:从分析class文件结构开始

作者&#xff1a;小马快跑 Class字节码 Java 能做到 一次编译&#xff0c;到处运行&#xff0c;主要就是靠 class字节码 文件&#xff0c;也就是 java 文件经过编译之后 .java -> .class&#xff0c;然后再被 JVM 虚拟机加载。其实&#xff0c;不仅是 java 语言&#xff0c…

每日做题总结——day02

目录 字符串处理函数&#xff0c;strcpy&#xff0c;strcat 数组指针 函数缺省值 初始化列表​编辑 友元函数 new与delete 静态成员变量 new与构造函数 delete与析构函数 拷贝构造函数的特点 常成员函数 初始化列表 编程题 字符串中找出连续最长的数字串 数组中超过…

字节的面试,你能扛住几道?

C &#xff0c; Python 哪一个更快&#xff1f; 读者答&#xff1a;这个我不知道从哪方面说&#xff0c;就是 C 的话&#xff0c;它其实能够提供开发者非常多的权限&#xff0c;就是说它能涉及到一些操作系统级别的一些操作&#xff0c;速度应该挺快。然后 Python 实现功能还…

从数据到应用 Web3不再纸上谈兵

继宣布拨款5000万港元加速推动Web3生态圈发展后&#xff0c;香港再次明确对Web3产业创新的支持。近日&#xff0c;香港Web3协会正式成立&#xff0c;创立Web3Hub基金&#xff0c;“东方之珠”正在大力推进第三代互联网的生态建设。 不仅仅是政策红利&#xff0c;ChatGPT等人工…

Web服务器配置(Tomcat)【Centos】

Tomcat 是一个轻量化服务器&#xff0c;理论上支持 20,000 个用户 LNMP&#xff1a;Linux Nginx MySQL LTMP&#xff1a;Linux Tomcat MySQL 1.Apache Tomcat 从版本7开始&#xff0c;若仅仅只需要部署HTML静态页面&#xff0c;Apache就可以完全够用 查看Apache是否安装 rpm -…

Ajax的特性以及用法

一、什么是Ajax 1、jQuery的Ajax ①&#xff1a;get方法​编辑 ②&#xff1a;post方法 ③&#xff1a;Ajax&#xff08;这个重要&#xff0c;jQuery的ajax最常用&#xff09; PS&#xff1a;一定要注意&#xff0c;数据类型是 json &#xff01;&#xff01;&#xff01; …

google breakpad中minidump_stackwalk的编译(Windows)

接上一篇的内容&#xff1a; breakpad编译指南&#xff08;Windows&#xff09;_我的胖是因为太膨胀的博客-CSDN博客 1、获取 googletest 放进 breakpad/src 目录下&#xff0c;并把目录名重命名为testing git clone https://github.com/google/googletest.git 如下图 2、把…

ROS2安装教程(virtualbox7.0.6+ROS2)

整个过程分两步&#xff1a;先安装Virtualbox&#xff0c;再安装ROS2 一、安装virtualbox7.0.6 网址&#xff1a;https://www.virtualbox.org/wiki/Downloads 问题1 安装时报错&#xff1a;缺少python core 、win32api依赖&#xff08;下图网上拷贝的图&#xff0c;版本忽略…

这份完整WhatsApp营销方案请收好!

WhatsApp是什么&#xff1f; WhatsApp是一种跨平台的即时通讯应用程序&#xff0c;可以在手机、平板电脑和电脑上使用。它允许用户发送文字消息、语音消息、图片、视频和文件等内容&#xff0c;同时还可以进行语音通话和视频通话。 WhatsApp拥有多种功能&#xff0c;包括但不…

Windows下通过CMake编译hiredis及应用

1、 在下载的redis-6.2.12.tar.gz的压缩包中&#xff0c;解压后有个deps文件夹&#xff0c;里面有个hiredis文件夹&#xff0c;是我们访问redis的C接口&#xff0c;需要我们手动编译后才能使用。&#xff08;redis: https://redis.io/download/&#xff09; 2、打开CMake软件&…

日本PSE认证日本的電気用品安全法METI备案

日本的電気用品安全法&#xff08;PSE认证&#xff09;法规要求日本的采购商在购进商品后一个月内必须向日本METI注册申报&#xff0c;并必须将采购商名称或ID标在产品上&#xff0c;以便在今后产品销售过程中进行监督管理&#xff0c;完成后将获得電気用品製造事業届出書&…

全球化背景下,如何利用内容营销促进跨境电商业务增长

随着全球跨境电商市场的迅速发展&#xff0c;越来越多的企业开始将注意力转向跨境电商。然而&#xff0c;随着竞争的激烈化&#xff0c;企业不再能够仅仅依靠产品本身来吸引消费者的注意。因此&#xff0c;内容营销成为了跨境电商企业在吸引、留住消费者方面的关键。在这篇文章…

【Spring】— Spring AOP

目录 一、Spring AOP简介1.什么是AOP2.AOP术语 二、AspectJ开发1.基于XML的声明式AspectJ1.1 配置切面1.2 配置切入点1.3 配置通知 2.基于注解的声明式AspectJ 一、Spring AOP简介 1.什么是AOP AOP的全称是Aspect-Oriented Programming&#xff0c;即面向切面编程&#xff08;…

芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS

修饰性PEG芴甲氧羰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS是保护氨基的PEG衍生物之一 结构式&#xff1a; 芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS聚乙二醇化可以提高聚乙二醇分子的稳定性&#xff0c;降低其免疫原性&#xff0c;仅用于科研实验。 FMOC-NH…

骨传导风靡蓝牙耳机市场 AI赋能有望打破行业技术桎梏

一、骨传导耳机行业概述 骨传导耳机是运用骨传导技术应用制造的耳机&#xff0c;听到的大部分声音都是声波经过空气到达骨膜振动进而将声音传入内耳&#xff0c;另一种方式是声波通过骨震动可以直接传至内耳。骨传导耳机可分为骨传导扬声器技术应用耳机、骨传导麦克风技术应用…

关于比较中设置极大值,常设置的0x3f3f3f3f

无穷大常量 int型变量的取值范围&#xff1a;[-2^31, 2^31 - 1] -> [-2147483648, 2147483647] 0x7fffffff 2147483647 (2^31 - 1) (1 << 31) - 1 0x3fffffff 1073741823 (2^30 - 1) (1 << 30) - 1 0x3f3f…

产品经理必读 | 俞军产品经理十二条军规

最近在学习《俞军产品方法论》&#xff0c;觉得俞军总结的十二条产品经理原则非常受用&#xff0c;分享给大家。 01. 产品经理首先是产品的深度用户 自己设计的产品都没使用过的产品经理&#xff0c;如何明白用户使用的问题&#xff0c;如何解决问题&#xff0c;所以产品经理肯…

java版工程项目管理系统源代码-功能清单 图文解析

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

工信部第369批新品公示冷藏车占比显著提升,新能源“卡位战”已悄然打响

一、冷藏车行业概述 随着货物储运的种类不断增多&#xff0c;有些货物在储运过程中易受到外界温度、湿度等条件影响而发生腐烂变质。为了保持易腐货物的本来品质和使用价值&#xff0c;在运输途中不发生腐烂变质和数量上的短缺&#xff0c;提高货物运输的安全性&#xff0c;减…