c++ 进制转换
来源:互联网 发布:vscode 调试ts 编辑:程序博客网 时间:2024/06/04 18:17
// SistemaChange.cpp
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <math.h>
//M进制转N进制(16进制以内互相转换)
//翻转int
int convert(int num) {
int result = 0;
if(num == 0) {
return result;
}
int sign = num/abs(num);
num *= sign;
while(num > 0) {
int i = num % 10;
num = num / 10;
result = result * 10 + i;
}
return result * sign;
}
//A问题分解
//1.1
// 2#1011 = 1*2^0+1*2^0+1*2^2+1*2^3=11
//2进制转10进制(整数)
int TwoToTen(int s2){
int s10=0;
int weight=0;
int tmpS2=s2;
int r=0;
while(tmpS2>0){
r=tmpS2 %10;//最后一位
s10+=r*pow(2,weight);
tmpS2/=10;
weight+=1;
}
return s10;
}
//1.2
//K进制转10进制
int KToTen(int sk,int k){
int s10=0;
int weight=0;
int tmpSk=sk;
int r=0;
while(tmpSk>0){
r=tmpSk %10;//最后一位
s10+=r*pow(k,weight);
tmpSk/=10;
weight+=1;
}
return s10;
}
//2.1
//10进制转2进制
//思路:倒除
//10#13-->8+4+1 = 1011
//13/2=6 余 1
//6/2=3 余 0
//3/2=1 余 1
//1/2=0 余 1
//逆序输出
int TenToTwo(int s10){
bool flag=0;
int s2=0;
int weight=0;
int tmpS10=s10;
int p=0;//商值
int r=tmpS10%2;//余数
if(r==0){flag=1;}
while(tmpS10>0){
p=tmpS10/2;
r=tmpS10%2;
s2+=r*pow(10,weight);
tmpS10=p;
weight+=1;
}
if(!flag){
return s2;
}else{
return 10*s2;
}
}
//2.2
//10进制转k进制
int TenToK(int s10,int k){
bool flag=0;
int sk=0;
int weight=0;
int tmpS10=s10;
int p=0;//商值
int r=tmpS10%k;//余数
if(r==0){//第一个余数为0
flag=1;
}
while(tmpS10>0){
p=tmpS10/k;
r=tmpS10%k;
sk+=r*pow(10,weight);
tmpS10=p;
weight+=1;
}
//最高位是0 例如10#3-->3#10 先得到的是01
if(!flag){
return sk;
}else{
return 10*sk;
}
}
//最终K进制转M进制
//最简单:k->10->m
int KToMSimple(int sk,int k, int m){
int s10=KToTen(sk,k);
int sm=TenToK(s10,m);
return sm;
}
int main(int argc, char* argv[])
{
// printf("Hello World!\n");
//测试2->10
cout<<"2#1011-->10#"<<TwoToTen(1011)<<"\n";//11
cout<<"2#11011-->10#"<<TwoToTen(11011)<<"\n";//27
//测试2->10
cout<<"k2#1011-->10#"<<KToTen(1011,2)<<"\n";//11
cout<<"k2#11011-->10#"<<KToTen(11011,2)<<"\n";//27
//测试3->10
cout<<"k3#11-->10#"<<KToTen(11,3)<<"\n";//4
cout<<"k3#11-->10#"<<KToTen(101,3)<<"\n";//10
cout<<"k3#11011-->10#"<<KToTen(11011,3)<<"\n";//112
cout<<"k3#201-->10#"<<KToTen(201,3)<<"\n";//112
//测试10->2
cout<<"10#13-->2#"<<TenToTwo(13)<<"\n";//1011
cout<<"10#15-->2#"<<TenToTwo(15)<<"\n";//1111
//测试10->2
cout<<"10#13-->2#"<<TenToK(13,2)<<"\n";//1011
cout<<"10#15-->2#"<<TenToK(15,2)<<"\n";//1111
//测试10->3
cout<<"10#13-->3#"<<TenToK(3,3)<<"\n";//10
cout<<"10#13-->3#"<<TenToK(4,3)<<"\n";//11
cout<<"10#15-->3#"<<TenToK(10,3)<<"\n";//101
//测试k->m
cout<<"2#1011-->3#"<<KToMSimple(1011,2,3)<<"\n";//10:11 3:102 2+1*3^2=11
cout<<"2#1101-->3#"<<KToMSimple(1101,2,3)<<"\n";//10:13 3:111 1+1*3^1+1*3^2=13
cout<<"9#312-->4#"<<KToMSimple(312,9,4)<<"\n";//10:11 3:102 2+1*3^2=11
cout<<"9#312-->10#"<<KToTen(312,9)<<"\n";//10:11 3:102 2+1*3^2=11
cout<<"9#254-->4#"<<TenToK(KToTen(254,9),4)<<"\n";//10:11 3:102 2+1*3^2=11
return 0;
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <math.h>
//M进制转N进制(16进制以内互相转换)
//翻转int
int convert(int num) {
int result = 0;
if(num == 0) {
return result;
}
int sign = num/abs(num);
num *= sign;
while(num > 0) {
int i = num % 10;
num = num / 10;
result = result * 10 + i;
}
return result * sign;
}
//A问题分解
//1.1
// 2#1011 = 1*2^0+1*2^0+1*2^2+1*2^3=11
//2进制转10进制(整数)
int TwoToTen(int s2){
int s10=0;
int weight=0;
int tmpS2=s2;
int r=0;
while(tmpS2>0){
r=tmpS2 %10;//最后一位
s10+=r*pow(2,weight);
tmpS2/=10;
weight+=1;
}
return s10;
}
//1.2
//K进制转10进制
int KToTen(int sk,int k){
int s10=0;
int weight=0;
int tmpSk=sk;
int r=0;
while(tmpSk>0){
r=tmpSk %10;//最后一位
s10+=r*pow(k,weight);
tmpSk/=10;
weight+=1;
}
return s10;
}
//2.1
//10进制转2进制
//思路:倒除
//10#13-->8+4+1 = 1011
//13/2=6 余 1
//6/2=3 余 0
//3/2=1 余 1
//1/2=0 余 1
//逆序输出
int TenToTwo(int s10){
bool flag=0;
int s2=0;
int weight=0;
int tmpS10=s10;
int p=0;//商值
int r=tmpS10%2;//余数
if(r==0){flag=1;}
while(tmpS10>0){
p=tmpS10/2;
r=tmpS10%2;
s2+=r*pow(10,weight);
tmpS10=p;
weight+=1;
}
if(!flag){
return s2;
}else{
return 10*s2;
}
}
//2.2
//10进制转k进制
int TenToK(int s10,int k){
bool flag=0;
int sk=0;
int weight=0;
int tmpS10=s10;
int p=0;//商值
int r=tmpS10%k;//余数
if(r==0){//第一个余数为0
flag=1;
}
while(tmpS10>0){
p=tmpS10/k;
r=tmpS10%k;
sk+=r*pow(10,weight);
tmpS10=p;
weight+=1;
}
//最高位是0 例如10#3-->3#10 先得到的是01
if(!flag){
return sk;
}else{
return 10*sk;
}
}
//最终K进制转M进制
//最简单:k->10->m
int KToMSimple(int sk,int k, int m){
int s10=KToTen(sk,k);
int sm=TenToK(s10,m);
return sm;
}
int main(int argc, char* argv[])
{
// printf("Hello World!\n");
//测试2->10
cout<<"2#1011-->10#"<<TwoToTen(1011)<<"\n";//11
cout<<"2#11011-->10#"<<TwoToTen(11011)<<"\n";//27
//测试2->10
cout<<"k2#1011-->10#"<<KToTen(1011,2)<<"\n";//11
cout<<"k2#11011-->10#"<<KToTen(11011,2)<<"\n";//27
//测试3->10
cout<<"k3#11-->10#"<<KToTen(11,3)<<"\n";//4
cout<<"k3#11-->10#"<<KToTen(101,3)<<"\n";//10
cout<<"k3#11011-->10#"<<KToTen(11011,3)<<"\n";//112
cout<<"k3#201-->10#"<<KToTen(201,3)<<"\n";//112
//测试10->2
cout<<"10#13-->2#"<<TenToTwo(13)<<"\n";//1011
cout<<"10#15-->2#"<<TenToTwo(15)<<"\n";//1111
//测试10->2
cout<<"10#13-->2#"<<TenToK(13,2)<<"\n";//1011
cout<<"10#15-->2#"<<TenToK(15,2)<<"\n";//1111
//测试10->3
cout<<"10#13-->3#"<<TenToK(3,3)<<"\n";//10
cout<<"10#13-->3#"<<TenToK(4,3)<<"\n";//11
cout<<"10#15-->3#"<<TenToK(10,3)<<"\n";//101
//测试k->m
cout<<"2#1011-->3#"<<KToMSimple(1011,2,3)<<"\n";//10:11 3:102 2+1*3^2=11
cout<<"2#1101-->3#"<<KToMSimple(1101,2,3)<<"\n";//10:13 3:111 1+1*3^1+1*3^2=13
cout<<"9#312-->4#"<<KToMSimple(312,9,4)<<"\n";//10:11 3:102 2+1*3^2=11
cout<<"9#312-->10#"<<KToTen(312,9)<<"\n";//10:11 3:102 2+1*3^2=11
cout<<"9#254-->4#"<<TenToK(KToTen(254,9),4)<<"\n";//10:11 3:102 2+1*3^2=11
return 0;
}
- C#进制转换
- c#-进制转换
- C.进制转换
- c++-进制转换
- C语言-进制转换
- c/c++进制转换
- C语言 进制转换
- C语言进制转换
- C经典 进制转换
- C 进制转换程序
- 14C进制转换
- 进制转换C语言
- java、C/C++/Objective-c 进制转换
- java、C/C++/Objective-c 进制转换
- C#.NET 中的类型转换和进制转换
- 用c编写的进制转换
- C任意进制转换程序
- c语言中的进制转换
- 判断string为空时遇到的小问题
- Memcache学习笔记(6)- memcache分布式算法 - 一致性hash
- 朵开
- python 字典 一些总结(持续更新)
- Django在Windows系统下的安装配置
- c++ 进制转换
- UVA 10716 Evil Straw Warts Live 回文数 贪心
- AndEngine画矩形程序(练习 三)
- 深入理解ARM体系架构(S3C6410)---认识S3C6410
- DLL劫持注入技术分析、过各种游戏保护!让你做你爱做的事情!
- centos下安装xampp
- 多维数组转成一维数组
- SQL学习笔记
- session和cookie的区别