求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行)

求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行),第1张

#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进制数。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10097089.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存