【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

news2024/10/7 17:31:38

10进制 VS 2进制

        • 十进制转成二进制
        • 二进制 转成 十进制
        • 本题是高精度,如何做?

原题链接

本题我们先需要知道
十进制 如何转 二进制
二进制 如何转 十进制

十进制 如何转 二进制:
在这里插入图片描述

十进制转成二进制

例如 173 转成 二进制
就把173 短除法 除到0 然后 得到的余数,从下往上写

二进制 转成 十进制

在这里插入图片描述
利用如图方法,把二进制 转成 十进制

本题是高精度,如何做?

由于本题的 数据是1000位,
那么 1000位的数 / 2 是需要高精度除法
以及需要 高精度乘法,高精度加法的

原因如上述两个图,都需要用到 乘法,除法,加法

注意:

  1. 把初始数据a,每一位从大到小或者从小到大,入vector都可以,但是除法的时候,注意是从高位除起
  2. 剩下的就是正常的 高精度算法
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

vector<int> div(vector<int>& A, int b, int& r)
{
    vector<int> C;
    r = 0;
    for (int i = A.size() - 1; i >= 0; i -- )
    {
        r = r * 10 + A[i];
        C.push_back(r / b);
        r %= b;
    }
    reverse(C.begin(), C.end());
    while (C.size() > 1 && C.back() == 0) C.pop_back();
    return C;
}

vector<int> mul(vector<int>& A, int b)
{
    vector<int> C;
    for (int i = 0, t = 0; i < A.size() || t; i ++ )
    {
        if (i < A.size()) t += A[i] * b;
        C.push_back(t % 10);
        t /= 10;
    }

    while (C.size() > 1 && C.back() == 0) C.pop_back();
    return C;
}

vector<int> add(vector<int>& A, int b)
{
    vector<int> C;
    for (int i = 0, t = b; i < A.size() || t; i ++ )
    {
        if (i < A.size()) t += A[i];
        C.push_back(t % 10);
        t /= 10;
    }
    return C;
}

void print(vector<int>& A)
{
    for (int i = A.size() - 1; i >= 0; i -- )
        cout << A[i];
    cout << endl;
}

int main()
{
    string a;
    cin >> a;

    vector<int> A;
    for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');

    vector<int> B;
    while (A.size() > 1 || A[0] > 0)
    {
        int r;
        A = div(A, 2, r);
        B.push_back(r);
    }

    vector<int> C;
    for (int x: B)
    {
        C = mul(C, 2);
        C = add(C, x);
    }

    print(C);

    return 0;
}

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

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

相关文章

软件测试项目去哪里找?我都给你整理好了【源码+操作视频】

目录 一、引言 二、测试任务 三、测试进度 四、测试资源 五、测试策略 六、测试完成标准 七、风险和约束 八、问题严重程度描述和响应时间规范 九、测试的主要角色和职责 ​有需要实战项目的评论区留言吧&#xff01; 软件测试是使用人工或者自动的手段来运行或者测定…

updateByPrimaryKey和updateByPrimaryKeySelective的区别

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl MyBatis Generator概述 MyBatis Generator是一个专门为MyBatis框架使用者定制的代码生成器&#xff0c;它可以快速的根据表生成对应的映射文件、接口文件、POJO。而且&#…

Ajax XHR请求

文章目录 AJAX 向服务器发送请求请求向服务器发送请求GET 还是 POST&#xff1f;GET 请求POST 请求url 服务器上的文件异步 True 或 False&#xff1f;AsynctrueAsync false AJAX 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请…

人脸识别 Face Recognition 入门

人脸识别 Face Recognition 入门概述 找论文搭配 Sci-Hub 食用更佳 &#x1f4aa; Sci-Hub 实时更新 : https://tool.yovisun.com/scihub/ 公益科研通文献求助&#xff1a;https://www.ablesci.com/ 人脸识别流程&#xff1a;检测、对齐、&#xff08;活体&#xff09;、预处理…

图像融合方向:《GP-GAN: Towards realistic high-resolution image blending》论文理解

《GP-GAN: Towards realistic high-resolution image blending》论文理解 论文&#xff1a;《GP-GAN: Towards realistic high-resolution image blending》ACM MM 2019 链接&#xff1a;GP-GAN: Towards realistic high-resolution image blending 本文目录 《GP-GAN: Toward…

免费好用的数据可视化软件工具

如果你正在找数据可视化软件工具&#xff0c;或者你正想尝试新的可视化软件&#xff0c;那么接下来的内容一定要认真看。 通过对行业的了解及广泛的研究&#xff0c;小编整理了一份业内绝对最好的且免费的数据可视化工具列表&#xff0c;重点是免费。 D3.js JavaScript 库&a…

【C进阶】-- 动态内存管理

目录 1. 为什么存在动态内存分配❓ 2. 动态内存函数的介绍 2.1 malloc和free✅ ①申请:1️⃣ ②使用&#xff1a;2️⃣ ③释放&#xff1a;3️⃣ 2.2 calloc &#x1f9e8;与malloc的区别: 2.3 realloc 3.常见的动态内存错误 3.1 对NULL指针的解引用操作 &#x1f3…

这5个PNG免抠素材网站,可商用,赶紧马住了

推荐5个超好用的PNG素材网站&#xff0c;免费下载&#xff0c;还可以商用&#xff0c;建议收藏起来~ 1、菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 网站主要分享设计素材为主。像平面海报、免抠元素、背景图片、UI界面模板、图标、电商…

流辰信息微服务平台:数字化转型的优良工具!

在互联网迅猛发展的今天&#xff0c;越来越多的企业倾向于新兴领域带来的便利性和灵活性了&#xff0c;其中&#xff0c;微服务平台就是其中之一了。流辰信息微服务平台是专注于研发系统开发、数据治理、数据分析的平台&#xff0c;致力于为各中大小型企业提供优质的微服务解决…

修炼汇编语言第二章:内存地址空间(概述)

目录 前言 一、主板和接口卡 二、存储器各类芯片 三&#xff1a;内存地址空间 总结 前言 什么是内存地址空间呢&#xff1f;如果地址线为10&#xff0c;那么可以寻址1024个地址空间&#xff0c;这1024个地址空间就构成这个CPU的内存地址空间&#xff0c;下面本文将会介绍…

HTB-DevOops

HTB-DevOops 信息收集5000端口 立足python反序列化攻击XEE读取SSH root 信息收集 5000端口 根据文字所述&#xff0c;下面的图片是feed.py。 目录扫描 /upload如下&#xff1a; 上传测试xml文件。 得到反馈 怀疑是标签不匹配&#xff0c;尝试寻找匹配的标签。前面首页有提…

linux平台移植qt

话不多说直接开干&#xff0c;首先需要下载源码包&#xff0c;进入网址https://download.qt.io/archive/qt/进行下载对应的版本即可&#xff0c;比如我这里下载5.12.12版本的&#xff0c;如下图找到即可。 然后把下载的包放到服务器上进行解压tar xpf qt-everywhere-src-5.12.…

2023PGA塑料行业发展新机遇

什么是PGA塑料? PGA塑料是生物降解塑料中的一种&#xff0c;具有可完全分解的酯结构和降解速度最快的脂肪族聚酯类高分子材料&#xff0c;且无需特定降解条件&#xff0c;同时具有良好的耐高温性、机械强度、降解速率和生物相容性。 从政策面来看&#xff0c;随着中国“限塑…

【问题记录】docker 搭建 minio

一、搭建过程 docker 搜索minio镜像 docker search miniodocker 拉取镜像 docker pull minio/miniodocker 启动 minio docker run -p 9900:9900 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEY1qazWSX -v /usr/local/minio/data:/data -v …

【2023软考】信息系统监理师与系统集成项目管理工程师哪个更好考?

肯定是系统集成项目管理工程师更好考。 软考信息系统监理师是一项国家级专业职业资格证书&#xff0c;是我国信息技术行业的重要职业资格之一。软考信息系统监理师主要从事信息系统建设项目的监理和管理工作&#xff0c;包括项目前期准备、项目实施阶段和项目验收阶段的监理和…

Databend 开源周报第 90 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 元数据优化 最…

推荐给工控人的时间管理办法

艾维利时间管理法 Ivy Lee Time Management Act 艾维利时间管理法是一种被广泛采用的时间管理方法&#xff0c;它能够帮助人们更好地利用时间和精力。该方法通过将任务分为三类&#xff0c;即A类、B类和C类&#xff0c;来确定工作的优先级。在这种方法中&#xff0c;A类任务是…

【技术选型】Mysql和ES数据同步方案汇总

文章目录 背景一、Mysql和ES各自的特点为什么选用Mysql为什么选用 ES 二、数据同步方案1、同步双写2、异步双写&#xff08;MQ方式&#xff09;3、基于Mysql表定时扫描同步4、基于Binlog实时同步5、业界目前较为流行的方案&#xff1a;使用canal监听binlog同步数据到es 三、数据…

Java学习笔记-01

目录 jdk安装及环境配置 java前置知识 编写一个HelloWorld 常量 数据类型 变量 类型转换 算数运算符 一元运算符( --) 关系运算符 逻辑运算符(与或非&#xff0c;逻辑异或) 三元(三目)运算符 Scanner类的简单使用 jdk安装及环境配置 看到的一篇文章&#xff0c;…

Vue 过渡与动画的使用

transition 标签的作用&#xff1a;在插入 更新或 移除 DOM 元素时 可以给元素添加动画效果. transition 标签配合的 class 类有&#xff1a; - v-enter:进入的起点。 - v-enter-active:进入时的效果。 - v-enter-to:进入的终点。 - v-leave:离开的起点。 - v-leave-active:离…