1.负进制转换

洛谷P1017 进制转换

负进制的转换和正进制的转换雷同,都是用短除取余法,这里要保证余数都要是正数才行;
要想让本来余数是负数变为正数,其实很好操作,就直接让商+1,余数-(相应的进制数)
例如 - 15 对 - 2 取余得商为 7,余数为 - 1 ;则让商加 1 变为 8 ,即商为 8 的时候余数为 1 ,可进行验算,8 × ( -2 ) +1 = -15。验算结果正确
被除数 - 余数= 商 × 除数,余数 = 被除数 - 商 × 除数,让被来为负数的余数变为正数,等于说就是让余数增大,也就是说让(商 × 除数)变小,因为除数是个负数,所以说,让商变大即可.
注意当 n 等于 0 的时候需要特判

上代码:

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> ans;//用来存储答案
int main()
{int n, m;cin >> n >> m;int cnt = n;if (n == 0){printf("0=0(base%d)", m);return 0;}while (cnt){int tmp1 = cnt % m;cnt /= m;if (tmp1 < 0) cnt++, tmp1 -= m;//保证余数是正数ans.push_back(tmp1);}printf("%d=", n);for (int i = ans.size() - 1;i >= 0;i--){if (ans[i] < 10) cout << ans[i];else printf("%c", ans[i] - 10 + 'A');}printf("(base%d)", m);return 0;
}

2.多进制转换

AcWing 124.数的进制转换

y总方法的确神奇,直接a进制转b进制,都不用经过十进制,省了不少写代码时间呢,小做记录。

思路就是根据a进制数来算出b进制数中的每一位,其实也是短除法;

就是让a进制数对b取余,得到的余数作为b进制的个位;
接着让a进制数/b后得到的商,再继续对b取余后,得到b进制数的十位;
一次类推,直到a进制数 / b的商为0为止。

这个还需要高精度模拟,因为数位比较多。下面放上代码。

上代码:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{int n;cin>>n;while(n--){int a,b;string a_len,b_len;cin>>a>>b>>a_len;vector<int> num;for(int i=0;i < a_len.size();i++){if(a_len[i]>='0'&&a_len[i]<='9') num.push_back(a_len[i]-'0');else if(a_len[i]>='a'&&a_len[i]<='z') num.push_back(a_len[i]-'a'+36);else if(a_len[i]>='A'&&a_len[i]<='Z') num.push_back(a_len[i]-'A'+10);}reverse(num.begin(),num.end());vector<int> ans;while(num.size()){int r=0;for(int i=num.size() - 1;i>=0;i--){num[i] += r*a;//当前数字的值r = num[i] % b;//当前数字的余数num[i] /= b;//当前数字的商}ans.push_back(r);while(num.size()&&!num.back()) num.pop_back();}reverse(ans.begin(),ans.end());for(int i = 0;i < ans.size();i++){if(ans[i] >= 0 && ans[i] <= 9) b_len += ans[i] + '0';else if(ans[i] >= 10 && ans[i] <= 35) b_len += ans[i] - 10 + 'A';else if(ans[i] >= 36&&ans[i] <= 61) b_len += ans[i] - 36 + 'a';}cout << a << " " << a_len << endl;cout << b << " " << b_len << endl;puts("");}return 0;
}

【进制转换】负进制转换 多进制转换相关推荐

  1. html进制转换js代码,JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: 运行下面代码 //10进制转为16进制 (10).toString(16) ...

  2. Bailian2710 数制转换(POJ NOI0113-01)【进制】

    问题链接:POJ NOI0113-01 数制转换. 原题出处:Bailian2710 数制转换. 总时间限制: 1000ms 内存限制: 65536kB 描述 求任意两个不同进制非负整数的转换(2进制 ...

  3. Java005-二进制、八进制、十进制和十六进制之间的转换

    Java005-二进制.八进制.十进制和十六进制之间的转换 一.Java中的进制转换 1)在Java中各进制的输入 (1)二进制输入,需要在开头加0B或0b,如0B1101. (2)八进制输入,需要在 ...

  4. C++实现10进制转换2,8,16进制

    C++实现10进制转换2,8,16进制 (1)使用c++实现10进制int型转换到2,8,16进制,其中int型最大值为2147483647,所以输入转换的数不能大于该数. (2)使用数组进行转换时使 ...

  5. python实现十进制转换成十六以内任意进制

    十进制转换成二进制 十进制转换成二进制,采用的是"除以2求余数"的计算方法,如下所示: "除以2"的过程,得到的余数是从低到高的次序,而需要的带的输出是从高位到 ...

  6. 5.IDA-文本搜索、二进制搜索(16进制字节序列)、替换16进制

    1.文本搜索 IDA文本搜索相当于对反汇编列表窗口进行子字符串搜索.通过Search▶Text(热键:ALT+T)命令启动文本搜索 选择Find all occurences(查找所有结果),IDA将 ...

  7. 16进制转double dotnet_终于把计算机进制弄明白了!

    And there's one thing that I need from you 我只需要你为我做一-件事 Can you come through, through 待在我的身边就好 Throu ...

  8. 计算机进位制转换方法,计算机系统的硬件之三不同进位制之间的转换

    一. "十进制"与"二进制"的转换:除以2取余法 X ( 10) = b n × 2 n + b n-1 × 2 n-1 +--+ b 1 × 2 1 + b ...

  9. C++ 链栈实现10进制转换为2、8、16进制(详细)

    代码实现         (程序中已详细注释,这里不再重复说明,有疑惑可留意哦) //导入头文件 #include<iostream> #include<stdio.h> #i ...

  10. 计算机中各种数制间的转化(10进制与2、8、16进制之间的快速转化)

    最近看数据结构的书,回顾下以前学的东西.无意间翻到了stack这章,我就在想,为什么要使用栈这种数据结构?它的底层不也就是数组或者链表来实现的吗?于是,希望能从书中找到答案(其实我之前也猜想,无非是和 ...

最新文章

  1. 解密 Redis 助力双 11 背后电商秒杀系统
  2. 科普长文揭秘生命为何会具有主观能动性
  3. Java设计模式之策略模式---写的比较有趣,推荐大家看看
  4. 齐次(Homogeneous)、单项式、多项式
  5. Nginx+Php(FastCGI、Php-fpm)+Mysql+Zend+Memcache+Phpmyadmin+MongoDB+TT安装
  6. 实验吧_登陆一下好吗(骚注入)你真的会PHP吗?(代码审计)
  7. 关于未来交通,这些大咖在未来论坛上的讨论火花四溅
  8. CentOS 7系统语言修改成英文
  9. 1500w播放下还藏着什么热点?B站2个未来趋势你不得错过
  10. kettle 用cmd bat来运行ktr和kjb
  11. 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告
  12. 京东面试官:给我说说你简历上的订单系统是如何设计的?尽量详细点~
  13. java如何保证数据安全_java高并发下怎么保障数据安全?有哪些办法?
  14. 一文了解 AlphaFold 2 背后的 PDB 蛋白质结构数据集
  15. 公司U07 随机变量视角下的NPV估值 教材笔记
  16. 【视频分析】大规模机器学习在爱奇艺视频分析理解中的实践
  17. 计算机是如何执行程序的
  18. Ubuntu搭建交叉编译环境(arm、mips、powerpc)
  19. PostgreSQL 社交类好友关系系统实践 - 正反向关系查询加速
  20. 苹果平板可以用html么,苹果iPad怎么用?iPad新手必备十个使用心得分享(必看)...

热门文章

  1. OKR:打破组织中的沟通壁垒
  2. java epson_无法与Epson POS打印机通信
  3. python取数字前n位
  4. 关于NIST随机数测试软件报错问题的补充
  5. 关于Windows PowerShell
  6. 生态伙伴开发实践 | 智慧检测实验室应用系统快速接入指令集数字底座
  7. weight decay 的矩阵描述
  8. jotform 设计器_使用JotForm 4.0减轻表单构建的痛苦
  9. 哔哩大学计算机学院:初识常量变量学习笔记
  10. 墨奇科技博客 | 计算机视觉在前端应用中的实践Ⅰ