大家好,我想帮助我写一些代码,
void main()
{
int num4, num3, sum3, a, b, c, d, e, f, g, h, sum;
printf("enter two binary numbers\n");
scanf("%d", &num3);
scanf("%d", &num4);
sum = num3 | num4;
a = (sum / 10000000) % 10;
b = (sum / 1000000) % 10;
c = (sum / 100000) % 10;
d = (sum / 10000) % 10;
e = (sum / 1000) % 10;
f = (sum / 100) % 10;
g = (sum / 10) % 10;
h = (sum / 1) % 10;
sum3 = (a * 128) + (b * 64) + (c * 32) + (d * 16) + (e * 8) + (f * 4) + (g * 2) + (h);
printf("the answer is %d\n", sum3);
}
看来我的scanf" num3"在" num4"之后得到垃圾文件得到它的意见,任何人都知道为什么?
答案 0 :(得分:1)
假设您的输入是数字0和1的字符串,这是您要查找的代码:
#include <stdio.h>
int decode_binary(int n) {
int a, b, c, d, e, f, g, h;
a = (n / 10000000) % 10;
b = (n / 1000000) % 10;
c = (n / 100000) % 10;
d = (n / 10000) % 10;
e = (n / 1000) % 10;
f = (n / 100) % 10;
g = (n / 10) % 10;
h = (n / 1) % 10;
return (a * 128) + (b * 64) + (c * 32) + (d * 16) + (e * 8) + (f * 4) + (g * 2) + (h);
}
int main()
{
int num4, num3, sum;
printf("enter two binary numbers\n");
scanf("%d", &num3);
scanf("%d", &num4);
num3 = decode_binary(num3);
num4 = decode_binary(num4);
sum = num3 | num4;
printf("the answer is %d\n", sum);
return 0;
}
我认为输入已经是&#34;二进制&#34;,我如何解码它们?
嗯,%d
中的scanf
读取十进制值(即数字0
到9
的字符串,相对位置值为10 ^位置,最右边的位置开始分配了0次幂。
因此,如果您的scanf
被赋予十进制值(例如&#34; 138&#34;和&#34; 143&#34;,我的意思是,这个确切的序列数字),然后num3
和num4
将具有这两个值的二进制表示。
但是,如果您希望scanf
获得二进制值(例如&#34; 10001010&#34;以及&#34; 10001111&#34;)请注意,scanf
仍然认为这些是小数值 - 也就是说,num3
和num4
将具有小数10,001,010(千万,千)的二进制表示形式和10)和10,001,111(十亿,一千,一百一十一) - 所以你需要解码它们(也就是说,每个位置是2的幂,最右边的数字是0次幂。) / p>