0

uint16我想对一个浮点数进行异或,如下所示:

uint16_t a=20000;
double r,x,xo;
r=3.8;
xo=.1;
x=(int) r*xo*(1-xo);
c=a^x;

当我运行测试时,会发生以下错误:

invalid operand to binary ^

如何转换x为 16 位的整数值?

4

2 回答 2

0

nesC 是 C 的扩展,因此您可以将浮点数转换为整数,就像在 C 中使用强制转换一样。例如:

(int)(x+0.5)

请注意,这有局限性,请在此处查看更多详细信息:http ://www.cs.tut.fi/~jkorpela/round.html

于 2014-03-25T12:10:54.007 回答
0

问题是这x仍然是一个双重价值。演员阵容

x=(int) r*xo*(1-xo);

截断数字,但它仍然是一个双数。

要执行您想要的操作,您需要在 xor 之前声明xint强制转换:

c=a^((int)x);
于 2014-03-25T12:16:10.450 回答