
#include<stdioh>
#include<stdlibh>
#include<mathh>
#include<conioh>
void convert(int num);
void oppose(int n);
int a[16];
void main(void)
{
int num,jdz;
char ans;
while(1)
{
printf("请输入任意一个十进制整数: ");
scanf("%d",&num);
printf("\n");
printf("其绝对值为: ");
jdz=abs(num);
printf("%d\n\n",jdz);
printf("其原码为: \n");
convert(jdz);
printf("\n\n");
if(num>=0)
{
printf("其补码为: \n");
convert(jdz);
printf("\n\n");
}
else
{
printf("其补码为: \n");
oppose(a[16]);
printf("\n\n");
}
printf("按回车键继续或按ESC键结束程序!!!\n");
ans=getch();
while(ans!=13 && ans!=27)
{
ans=getch();
}
if(ans==13) system("cls");
if(ans==27)
{
system("cls");
printf("谢谢使用!!!\n");
break;
}
}
}
void convert(int num) /定义转化为原码的函数/
{
int i;
a[0]=num%2;
for(i=1;i<=15;i++)
{
a[i]=(num/2)%2;
num/=2;
}
for(i=15;i>=0;i--)
printf("%2d",a[i]);
}
void oppose(int n) /定义转化为补码的函数/
{
int i;
for(i=0;i<=15;i++)
{
switch(a[i])
{
case 1:a[i]=0;break;
case 0:a[i]=1;break;
}
}
for(i=0;i<=15;i++)
{
a[i]++;
if(a[i]>1) a[i]=0;
else break;
}
for(i=15;i>=0;i--)
printf("%2d",a[i]);
}
#include "stdioh"
#include "stringh"
int translat(char c)
{
if(c<='9'&&c>='0') return c-'0';
if(c>='a' && c<='f') return c-87;
if(c>='A' && c<='F') return c-55;
return -1;//其它字符返回-1
}
int Htoi(char str)
{
int length=strlen(str);
if(length==0) return 0;
int i,n=0,stat;
for(i=0;i<length;i++)
{
stat=translat(str[i]);//防错处理
if(stat>=0) n=n16+stat;
}
return n;
}
void main()
{
char Hex[20];
printf("Input Num at Hexadecimal:");
gets(Hex);
printf("%s=%d",Hex,Htoi(Hex));
}
#include<stdioh>
#include<conioh>
#include<stringh>
#define N 1000
char str[N];
int a[N],b[N];
int main(void)
{
void zsh();
long ycl();
int i,n;
do{
printf("请输入一个十六进制数:\n");
scanf("%s",str);
for(i=0,n=0;str[i]!='\0';i++)
if(str[i]<'0'||(str[i]>'9'&&str[i]<'A')||(str[i]>'F'&&str[i]<'a')||str[i]>'f')
{
n=1;
printf("输入不符和要求\n");
break;
}
}while(n);
zsh();
printf("转换成十进制后的结果为%ld\n",ycl());
getch();
}
void zsh()
{
int i,j;
j=strlen(str)-1;
b[j]=1;
for(i=j;i>0;i--)
b[i-1]=b[i]16;
}
long ycl()
{
long x,i,j;
j=strlen(str)-1;
for(x=0,i=j;i>=0;i--)
{
if(str[i]>='a'&&str[i]<='z')
a[i]=str[i]-'a'+10;
else if(str[i]>='A'&&str[i]<='Z')
a[i]=str[i]-'A'+10;
else
a[i]=str[i]-'0';
x=x+a[i]b[i];
}
return x;
}
16进制以0x开头,后面跟数字0~9或字母A~F(小写也可以),如:0x2D(16进制数2D)
1、十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。
2、十六进制与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
举例如下:
int x=23;
printf("%x", x); // 以16进制格式输出,输出17
printf("%o", x); // 以8进制格式输出,输出27
以上就是关于求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行)全部的内容,包括:求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行)、用c语言编写函数Htoi(s)把由16进制数成10进制的数、C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)