08/01/25 02:48:04
>>785
~ ヘッダのinclude 省略 ~
int main(void){
char line[18+1]={0}, buf[16+1]={0}, *p;
int i, num, tmp;
printf("Input Number (ex. B0000000001111011 or D123 ) ===>");
fgets(line, 18+1, stdin);
p = strchr(line, '\n');
if(p != NULL) *p = '\0';
switch(line[0]){
case 'B':
if(strlen(line) != 17) return 1;
for(i=16, tmp=1, num=0; i > 0; i--, tmp*=2) if(line[i] == '1') num += tmp;
if(line[1] == '1') num -= 65536;
printf("%s ===> D%6d\n", line, num);
break;
case 'D':
num = atoi(&line[1]);
if(num < -32768 || num > 32767) return 1;
if(num < 0) num += 65536;
for(i=15; i >= 0 && num != 0; i--, num/=2){
if( num%2 == 0) buf[i] = '0';
else buf[i] = '1';
}
for(; i >= 0; i--) buf[i] = '0';
printf("D%6s ===> B%s\n", &(line[1]), buf);
break;
}
return 0;
}