本文主要是介绍十进制转二进制,八进制,十六进制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入一个十进制的数,怎样能转化为二进制,八进制,十六进制呢?
首先我们要知道它的原理:
十进制转K进制
整数部分:十进制整数转化为K进制整数的方法是倒除法,即除K直至商为0,倒取余数。
例:172(10)=10101100(2)
注:
小数部分:十进制小数转换为K进制小数的方法是取整法,即小数部分循环乘K直至为0,顺序取整数部分。
例:0.625(10)=0.101(2)
0.625*2=1.25-------取出整数部分1
0.25*2=0.5----------取出整数部分0
0.5*2=1.0------------取出整数部分1
然后我又去查了C知道,C知道是这样回答的:
在C++中,将一个十进制数转换为二进制数可以使用位运算和循环来实现。下面是一个示例代码:
#include <iostream>
using namespace std;void decimalToBinary(int decimal) {int binary[32]; // 用于存储二进制数的数组int index = 0; // 数组索引// 将十进制数转换为二进制数while (decimal > 0) {binary[index] = decimal % 2;decimal = decimal / 2;index++;}// 输出二进制数(逆序输出)cout << "转换后的二进制数为:";for (int i = index - 1; i >= 0; i--) {cout << binary[i];}
}int main() {int decimal;cout << "请输入一个十进制数:";cin >> decimal;decimalToBinary(decimal);return 0;
}
运行以上代码,程序会要求你输入一个十进制数,然后将其转换为二进制数并输出。
那么,简化后就是:
#include<bits/stdc++.h>
using namespace std;
void h2(int x){int s[32];int n=0;while(x>0){s[n]=x%2;x=x/2;n++;}cout<<"转换后的二(B)进制数为:";for(int i=n-1;i>=0;i--){cout<<s[i];}
}
int main(){int x;cout<<"请输入一个十进制数:";cin>>x;h2(x);return 0;
}
我们要不断的将要转化的数除以2,记录它的余数,并倒序输出
八进制也是相同,只需把除的数变成八就行了:
#include<bits/stdc++.h>
using namespace std;
void h8(int x){int s[32];int n=0;while(x>0){s[n]=x%8;x=x/8;n++;}cout<<"转换后的八(O)进制数为:";for(int i=n-1;i>=0;i--){cout<<s[i];}
}
int main(){int x;cout<<"请输入一个十进制数:";cin>>x;h8(x);return 0;
}
转十六进制呢,我又去查了C知道,C知道是这样回答的:
在C++中,可以使用以下几种方法将整数转换为16进制表示:
- 使用std::hex和std::cout:
int num = 255; std::cout << std::hex << num;
这将输出255的16进制表示:ff。
- 使用std::stringstream:
#include <iostream> #include <sstream>int main() {int num = 255;std::stringstream ss;ss << std::hex << num;std::string hexStr = ss.str();std::cout << hexStr;return 0; }
这将输出255的16进制表示:ff。
- 使用sprintf函数:
#include <iostream> #include <cstdio>int main() {int num = 255;char hexStr[10];sprintf(hexStr, "%x", num);std::cout << hexStr;return 0; }
这将输出255的16进制表示:ff。
- 使用std::bitset:
#include <iostream> #include <bitset>int main() {int num = 255;std::bitset<8> binary(num);std::cout << std::hex << binary.to_ulong();return 0; }
这将输出255的16进制表示:ff。
反正我是看不懂,我就用第一种,大家可以随意替换
最后代码:
#include<bits/stdc++.h>
using namespace std;
void h2(int x){int s[32];int n=0;while(x>0){s[n]=x%2;x=x/2;n++;}cout<<"转换后的二(B)进制数为:";for(int i=n-1;i>=0;i--){cout<<s[i];}
}
void h8(int x){int s[32];int n=0;while(x>0){s[n]=x%8;x=x/8;n++;}cout<<"转换后的八(O)进制数为:";for(int i=n-1;i>=0;i--){cout<<s[i];}
}
void h16(int x){cout<<"转换后的十六(H)进制数为:";std::cout<<std::hex<<x;
}
int main(){int x;cout<<"请输入一个十进制数:";cin>>x;h2(x);cout<<endl;h8(x);cout<<endl;h16(x);return 0;
}
这篇关于十进制转二进制,八进制,十六进制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!