如何制作一个采用二进制参数的函数?
问题描述:
,所以我有这个功能,在C返回二进制表示:如何制作一个采用二进制参数的函数?
long int int2bin(int d)
{
int rem, pow = 1;
long int b = 0;
while(d > 0)
{
rem = d % 2 ;
b += (pow * rem);
d /= 2;
pow *= 10;
}
return b;
}
从这个
,所以我在想,我怎么可能去有bin2int()函数:
long int bin2int(bin b);
,你会使用这样的:
bin2int(10011);
,我可以这样
printf("%i\n", bin2int(10011));
中得到19
答
在伪码:
int result = 0;
int ci = 1;
string s = stringof(10011).reverse();
for(int z=0; z < s.length; z++,ci = ci * 2)
{
if(s[z] == '1')
result += ci;
}
答
二进制,十六进制和十进制只是代表相同数量的不同方式。例如,所有这些表示等同于相同 - 十进制中的27 =十六进制中的0x1b =二进制中的0b11011。
您可以使用任何格式指定数字作为函数的参数,该函数需要一个数字(int,unsigned int,甚至char等)。
例如,要打印您的二进制数字,您可以执行printf("%i\n", 0b10011)
这会给出数字19.您可以将语句编写为printf("%i\n", 19)
(十进制)或printf("%i\n", 0x13)
(十六进制)。
将二进制表示为字符串不是更好吗? – quasiverse
可能是的。我只是一般。我猜想将它表示为一个字符串将是除了制作自定义类型之外的唯一方法吗? – scruff
请参阅[我可以在C或C++中使用二进制文字](http://*.com/questions/2611764/can-i-use-a-binary-literal-in-c-or-c)。 – eran