二进制,三进制,十进制的程序

二进制,三进制,十进制的程序,第1张

首先,只有二进制 八进制 十进制 十六进制,不存在所谓的三进制

然后

代码实现如下,谨供参考:

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语言编程 把十进制转换为十六进制、中程序的权限为什么用十六进制表示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9837796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存