#c
#c
Вопрос:
#include <stdio.h>
#include <math.h>
long long convertToBinary(int dnumber);
int main() {
int width;
int dnumber;
printf("Enter Width(int bits): ");
scanf("%d",amp;width);
printf("nEnter Decimal NUmber: ");
scanf("%d",amp;dnumber);
if(width==8)
{
if(dnumber<=255 amp;amp; dnumber>0)
{
printf("nOutput - U2B(%d) = %lld",dnumber,convertToBinary(dnumber));
}else{
printf("You entered bigger than 8 bits");
}
}else if(width==16){
if(dnumber<=65535 amp;amp; dnumber>255){
printf("nOutput - U2B(%d) = %lld",dnumber,convertToBinary(dnumber));
}else{
printf("You entered lower or bigger number than 16 bits");
}
}
return 0;
}
long long convertToBinary(int dnumber){
long long binaryNumber = 0;
int remaindr, i = 1;
while (dnumber!=0)
{
remaindr = dnumber%2;
//printf("Step %d: %d/2, Remainder = %d, Quotient = %dn", i , dnumber, remaindr, dnumber/2);
dnumber /= 2;
binaryNumber = remaindr*i;
i *= 10;
}
return binaryNumber;
}
- Когда я даю 8 и 255, это дает мне двоичный
- Когда я даю 16 и 3935, это дает мне десятичное число
Почему он должен давать мне двоичное число?
Ответ №1:
i
переполняется в convertToBinary
Измените тип на long long:
long long i = 1;