如何使用Bitxor进行双号码?

时间:2013-07-19 08:10:57

标签: matlab integer double type-conversion double-precision

我想在matlab中使用xor作为我的双数,但是bitxor只适用于int数。在Matlab中是否有可以将double转换为int的函数?

2 个答案:

答案 0 :(得分:1)

您要查找的功能可能是:int8(number)int16(number)uint32(number)其中任何一项都会将Double转换为整数,但您必须选择最适合您的结果想要实现。请记住,如果不对数字进行舍入,则无法从Double转换为Integer。

如果我理解你,你可以通过将起始值乘以2 ^ n然后使用前面提到的任何函数将其转换为Integer来创建一个简单地从Double数中删除“逗号”的函数。无论你想要什么,然后通过将数字除以2 ^ n

将逗号返回到其原始位置

将起始值乘以2 ^ n是一种可以减少舍入误差的黑客攻击。 如果此数字相对较小, n 的完美值将是逗号后面的位数。

请同时注明,您为什么要这样做?这似乎不是最佳解决方案。

答案 1 :(得分:0)

你可以转换为整数:

a = 1.003

int8(a)

ans =

1

这会给你一个8位有符号整数,你也可以得到其他大小,即int16或其他无符号即uint8,具体取决于你想做什么