如何使用C增加16位机器中变量的潜在值

时间:2015-08-04 12:37:52

标签: c variables memory turbo-c

我创建了二进制到十进制转换器,但即使用二进制编写的小数字也有很多位数,因此太大而无法在16位机器上由整数变量保持。有没有办法解决。程序在C中。这是代码,谢谢:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
 clrscr();
 int a,b,d=0,x=1;
 int check(int y);
 printf("Enter your number in Binary:");
 scanf("%d",&a);
 if(check(a)==0)
 {
  printf("Number tolerable. Conversion Process Initiated.");
 }
 else 
 {
  printf("Number not binary. Try again.");
  exit(1);
 }

 while(a!=0)
 {
   if(a%10==1)
    {
     d=d+x;
    }
   a=a/10;
   x=x*2;
 }
 printf("\nDecimal:%d",d);
 getch();
}

int check(int y)
{
  while(y!=0)
  {
   if(y%10!=0&&y%10!=1)
   {
    return 1;
   }
   else
   {
    y=y/10;
   }
  }
 return 0;
}

3 个答案:

答案 0 :(得分:2)

一种简单的方法是将二进制数存储到字符数组中。要将其转换为数字,请参阅以下步骤 -

1.从i=n-1开始到i>=0(大小为n的数组)。

2.检查索引i处的字符是0还是1

按以下方式识别01 -

3.如果0,则数字为0

4.如果1,则数字将等于2^ii为索引)。

5.最后一步是添加它们。

否则使用integer array

答案 1 :(得分:0)

%d scanf格式说明符要求以十进制格式输入数字。没有二进制格式说明符,因此您必须将数字作为字符串读入并通过它进行解析。

例如,如果用户输入&#34; 101011&#34;,您需要将其识别为2 ^ 5 + 2 ^ 3 + 2 ^ 1 + 2 ^ 0并将这些值添加到结果数字(到要清楚,我使用^表示取幂而不是按位xor)。

答案 2 :(得分:0)

没有必要存储二进制数字。

#include <string.h>

int n=0,c;
printf("Enter your number in Binary:");
while(strchr("01",c=getch()))
    n+=n+c-'0';