首先,只有二进制 八进制 十进制 十六进制,不存在所谓的三进制
然后
代码实现如下,谨供参考:
import javautilScanner;
public class MultiIntPlusOperation {
int type;
String arg1, arg2;
String result;
public void input() {
// 输入
Scanner sc = new Scanner(Systemin);
// 输入进制
do {
Systemerrprintln("请选择输入参数的类型:\n(2,二进制 8,八进制 10,十进制 16,十六进制)");
type = scnextInt();
scnextLine();
} while (type != 2 && type != 8 && type != 10 && type != 16);
// 输入第一个参数
Systemerrprintln("请选择输入第一个参数:");
arg1 = scnext();
scnextLine();
// 输入第二个参数
Systemerrprintln("请选择输入第二个参数:");
arg2 = scnext();
scnextLine();
}
public void plus() {
// 根据不同的进制,进行不同的计算,返回不同进制格式的值
try {
// 判断进制
switch (type) {
case 2:
result = IntegertoBinaryString(IntegerparseInt(arg1, type)
+ IntegerparseInt(arg2, type));
break;
case 8:
result = IntegertoOctalString(IntegerparseInt(arg1, type)
+ IntegerparseInt(arg2, type));
break;
case 10:
result = IntegertoString(IntegerparseInt(arg1, type)
+ IntegerparseInt(arg2, type));
break;
case 16:
result = IntegertoHexString(IntegerparseInt(arg1, type)
+ IntegerparseInt(arg2, type));
break;
default:
input();
}
} catch (NumberFormatException e) {
Systemerrprintln("数字输入有误!");
type = -1;
arg1 = null;
arg2 = null;
result = null;
input();// 重新输入
plus();// 重新计算
}
Systemerrprintln("=====================================");
Systemerrprintln("两个" + type + "进制的数" + arg1 + "和" + arg2 + "相加");
Systemerrprintln("结果为:" + result);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MultiIntPlusOperation work = new MultiIntPlusOperation();
workinput();// 提示用户输入
workplus();// 计算,并打印计算结果
}
}
方法一:
#include<iostream>
#include <string>
using namespace std;
string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) str +=
DecIntToHexStr(Temp); if (left < 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i < strsize(); ++i) Dec =
Dec 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr); } return 0;}
方法二:
#include<iostream>
#include <string>
#include<vector>
#include <sstream>
#include <mathh>
using namespace std;int main()
{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; while (num) { int bit = num % 2; vpush_back(bit); num = num / 2; }
reverse(vbegin(), vend()); string hexStr; if (vsize() % 4 == 0) { for (int i = 0; i < vsize() / 4; ++i) { int temp = 0, k = 3; for (int j = i 4; j < (i +
1) 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }
else { int zeroNum = 4 - vsize() % 4; for (int i = 0; i < zeroNum; ++i) vinsert(vbegin(), 0); for (int i = 0; i < vsize() / 4; ++i) { int temp = 0, k = 3; for
(int j = i 4; j < (i + 1) 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp <= 9) { stringstream ss; string strTemp;
ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}
扩展资料:
还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。
下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。
利用系统函数有
1 char itoa ( int value, char str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}
2 sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}
3 自己编写
如果参数只要两位数的整数,那么很简单。
代码如下:
#include <stdioh>#include <stdlibh> char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char inttohex(int aa)
{ sprintf(buffer, "%x", aa); return (buffer);} int main ()
{ int num; char hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH\n", hex_str); return 0;}
计算机内部是以二进制来运作的,但是二进制要用很多位,输入输出都容易搞错。于是采用
十六进制
,1位
十六进制数
可用4位
二进制数
来表示,方便换算,再为了防止混乱,干脆只用十六进制。
只要买一个4-7的译码器,无需编程即可完成。所谓4-7译码器是指该集成块输入的是4位二进制数(高低电平),输出的是7位编码。该7位编码对应数码管的7个笔画。典型的型号有MOS电路4028等。可以上网查4-7译码器,获得更多资料。
#include <stdioh>
#define N 10
int main(void)
{
int i,t,num, a[N];
i=0; int j;
printf("输入一个整数:");
scanf("%d",&num);
do
{
t=num%16;
if(t>=0&&t<10)
{
a[i]=t;
}
else if(t>=10&&t<16)
{
a[i]='A'+t-10;
}
i++;
num/=16;
}while(num);
for(j=i-1;j>=0;j--)//把数组倒序
{
if(a[j]>=0&&a[j]<10)
printf("%d",a[j]);
else
printf("%c",a[j]);
}
return 0;
}
C语言程序十进制的数转换成八进制的数的办法:
#include <stdioh>
#include <mathh>
void main()
{
int n,a,sum = 0,i =0;
printf("十进制输出一个数n\n");
scanf("%d",&n);
while(n)
{
a = n%8;
n = n/8;
sum += apow(10,i);
i++;
}
printf("八进制输出sum:%d",sum);
}
//我给你个程序,比较繁琐。我也是新手。能够各种进制转换。输入的。多加了一些无实际意义的修饰。你直接全文拷贝进C++就能用了。不过有个问题,你的输入如果不正确我没有进行判断。你最好全部按正确输入。我用函数做的。
#include<iostreamh>
#include<iomaniph>
#include<stringh>
void nm_exc_tn(char[],int);
void nm_exc_thr(char[],int);
void main(){
int b,c;
char a[40];
char fb[40]; //目标串
char fn[40]; //十进制串
for (int i=0;i<40;i++){
a[i]=0;
fb[i]=0;
fn[i]=0;
}
cout<<"欢迎使用进制自动转换软件"<<endl;
for(i=1;i<=300000000;i++);
cout<<"此软件在进制转换过程中会自动先将原数转换为十进制,如需查看请在结束时选择"<<endl;
cout<<"但如原进制为十进制或目标进制为十进制,将不会提供此选项。"<<endl;
for(;;){
for(i=1;i<=300000000;i++);
cout<<"请依次输入需要转换的数、原进制、目标进制(均以数字方式输入,超过十进制输入大写字母)"<<endl;
cin>>a>>b>>c;
for(;;){
for(i=0;i<40;i++){
if (a[i]>='0'&&a[i]<10) if(a[i]-'0'>=b) break;
if(a[i]>='A'&&a[i]<='Z') if(a[i]-'A'+10>=b) break;
}
if (i==40) break;
cout<<"输入有误,转换数字越界,请重新输入正确转换数、原进制、目标进制。"<<endl;
}
strcpy(fb,a);
nm_exc_tn(fb,b);
strcpy (fn,fb);
nm_exc_thr(fb,c);
cout<<"您输入的"<<b<<"进制数“"<<a<<"”转化为"<<c<<"进制为“"<<fb<<"”"<<endl;
if(b!=10&&c!=10){
cout<<"是否需要查看中途十进制转换结果?任意数字查看,0不查看"<<endl;
cin>>c;
if(c!=0) cout<<"您输入的"<<b<<"进制数“"<<a<<"”转化为十进制为“"<<fn<<"”"<<endl;
}
cout<<"是否继续?0退出 任意数继续"<<endl;
cin>>c;
if (c==0) break;
}
cout<<"正在退出……"<<endl;
cout<<"Exiting……"<<endl;
for(i=1;i<=300000000;i++);
}
void nm_exc_tn(char a[40],int b){
int d=39;
while(a[d]==0) d--;
int f=0;
for(int i=0;i<=d;i++){
if(a[i]>='0'&&a[i]<='9') f=fb+a[i]-'0';
else f=fb+a[i]-'A'+10;
a[i]=0;
}
d=0;
while(f>0){
a[d]=f%10+'0';
f=f/10;
d=d+1;
}
d=d-1;
char ch;
for(i=0;i<=d/2;i++){
ch=a[i];
a[i]=a[d-i];
a[d-i]=ch;
}
}
void nm_exc_thr(char a[40],int c){
int d=39;
while(a[d]==0) d--;
int f=0;
for(int i=0;i<=d;i++){
f=f10+a[i]-'0';
a[i]=0;//0
}
d=0;
while(f>0){
if(f%c>=10) a[d]=f%c-10+'A';
else a[d]=f%c+'0';
f=f/c;
d=d+1;
}
d=d-1;
char ch;
for(i=0;i<=d/2;i++){
ch=a[i];
a[i]=a[d-i];
a[d-i]=ch;
}
}
win7自带计算器中的程序员里小数点那个符号是暗的,不能进行进制之间的转化是设置错误造成的,解决方法为:
1、找到电脑左下角的一个四色的开始图标点开。
2、将鼠标移动到所有程序的选项卡后会d出另一个子选项卡。
3、在子选项卡里找到附件并打开。
4、在附件里找到计算器,并打开,到这里已经成功了大半了。
5、在打开的计算机页面中,点开左上角的查看选项,此时d出好几个其他选项。选择程序员选项,或者直接按(alt+3)进入程序员界面。当然,想进行比较高级的计算时,可以打开科学计算器的页面。
6、然后就可以进行进制转换了。
以上就是关于二进制,三进制,十进制的程序全部的内容,包括:二进制,三进制,十进制的程序、c语言编程 把十进制转换为十六进制、中程序的权限为什么用十六进制表示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)