【发布时间】:2016-06-07 20:52:51
【问题描述】:
在我意识到 * 是算术运算之前,我一直在写这个。
我想返回二进制序列输入的非负整数表示。 IE。 0x4a 以十进制返回 74
typedef unsigned bit16;
unsigned int bin_to_dec(bit16 x)
{
int dec=0;
int k=0;
int remainder;
while (x!= 0){
remainder = x%10;
dec+=remainder*k;
k=k+2;
x=x/10;
}
:(
如果我不能使用除 +/- 以外的算术运算,我将如何进行这种转换?
【问题讨论】:
-
您错过了也是算术运算的 %、+ 和 /。但为什么呢?
-
如果你的函数是返回一个
int,那么在什么意义上你期望这个值是十进制而不是二进制? -
@Code_Penguin,
int不比任何其他算术类型多十进制,显然包括bit16。 C 根据位集合定义整数类型的表示。 -
请去掉
IEEE标签。 -
@Code_Penguin
0x4A是74。它们在 C 中表示完全相同的文字。尝试printf你的bit16你会看到。