首页 > 其他分享 >进制转换

进制转换

时间:2022-10-09 14:47:47浏览次数:84  
标签:cnt 转换 进制 int 余数 被除数 除数 cout

题目链接

难点:

首先,不管对于什么语言,

被除数=商*除数+余数,

这是解决问题的关键

例如在C++里,-15%-2=-1,-15/-2=7,而7*-2+(-1)=-15

但是因为我们是不断取余数倒序为转换结果,所以余数不能出现负数,那怎么办呢?

我们只需要将商+1,余数-除数即可,因为余数(绝对值)一定小于除数,所以这样就可以将余数装换为正数

正确性证明:

(商+1)*除数+(余数-除数)=商*除数+除数+余数-除数=商*除数+余数=被除数
int y = n % r;
if (y < 0) {
		y -= r;
		n += r;
    }

注意:这里为什么n要加上r 呢,因为商加了一个1,其实他本质上是n加了一个r。下面的好像不对

应该就是这样。

 

AC代码:

#include<iostream>

using namespace std;
int a[64];
int main() {
	int n, r;
	cin >> n >> r;
	int t = n;
	int cnt = 0;
	while (n) {
		int y = n % r;
		if (y < 0) {
			y -= r;
			n += r;
		}
		a[++cnt] = y;

		n /= r;
	}
	cout << t << '=';
	for (int i = cnt; i >= 1; i--) {
		if (a[i] > 9) {
			printf("%c", a[i] -  10 + 'A');
		} else cout << a[i];
	}
	cout << "(base" << r << ')';

	return 0;

}

 

标签:cnt,转换,进制,int,余数,被除数,除数,cout
From: https://www.cnblogs.com/msluli/p/16772024.html

相关文章

  • 时间类型和字符串类型相互转换——SimpleDateFormat中parse和format的用法
    SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");simpleDateFormat.parse("xxxxxxx");//字符串->时间simpleDateFormat.format(new......
  • Python 二进制,十进制,十六进制转换
    十六进制到十进制使用int()函数,第一个参数是字符串'0Xff',第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。>>>int('0xf',16) 15二进制......
  • 网络字节序与主机字节序的转换函数实践
        CPU向内存保存数据的方式有2种,这意味着CPU解析数据的方式也分为2种:        ♦ 大端序(bigendian):高位字节存放到低位地址;      ......
  • 关于TCP和UDP的联系与区别以及网络字节序和主机字节序的转换函数实践
    1.TCP和UDP的相同点:TCP和UDP都是在网络层,都是传输层协议,都能都是保护网络层的传输,双方的通信都需要开放端口。2.TCP和UDP的不同点:TCP传输协议,是一种面向连接的、可靠的......
  • 实现进制转化
    实现进制转化1.C语言实现十进制转二进制、八进制:include<stdio.h>include<math.h>intmain(void){intm,i,quotient=1,remainder,n=0,answer=0;printf("Ent......
  • 如何使用JavaScript将Set转换为Array?
    https://blog.csdn.net/m0_66319974/article/details/122436737在JavaScript中,想要将Set(集合)转换为Array数组,可以通过以下方式实现。方法1:使用Array.from()方法Array.......
  • 主机字节序和网络字节序的转换
    网络字节序:是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能被正确解释。网络字节序采用大端字节排序方式。......
  • 网络字节序与主机字节序的转换函数(实践)
    什么是字节序?字节序,顾名思义,指字节在内存中存储的顺序。(1)小端字节序,数值低位存储在内存的低地址,高位存储在内存的高地址;(2)大端字节序,数值高位存储在内存的低......
  • 网络字节序与主机字节序的转换函数实践
     在Linux网络编程中,经常会遇见网络字节序喝主机字节序的相互转换,要了解他们,首先要知道什么是字节序。字节序,顾名思义,指字节在内存中存储的顺序。比如一个int32_t类型的......
  • 网络字节序与主机字节序的转换
    什么是字节序? 字节序指字节在内存中存储的顺序。字节序有两种:(1)小端字节序(Littleendinan),数值低位存储在内存的低地址,高位存储在内存的高地址;(2)大端字节序(Bigendian),数值......