c++ - 这个 float 公式是什么意思?

标签 c++ floating-point

好的,我得到了一个公式,可以使用 i 和 j(二维数组中值的坐标)确定 0.0 到 1.0 之间的浮点值。我只是想确切地知道这个公式的作用。对我来说完全是无稽之谈。我在它自己的函数中实现了它,其中 i 和 j 的 int 值作为参数传递。有人可以提供解释吗?我不必理解它,因为他把它交给我们只是为了按原样使用,但我真的很想知道。

float col = float (((i & 0x08) == 0) ^ ((j & 0x08) == 0));

这里到底发生了什么?

最佳答案

如果用 i,j 作为 x,y 坐标绘制,结果将是一个 8x8 像素正方形的棋盘格。

i & 0x08j & 0x08 只是测试每个轴的一个位。该位将每 8 个像素更改一次状态。

== 0 会将每个结果转换为 bool 值,计算结果为 0 或 1。它还会反转结果,但我认为这与整个公式无关。

如果两者相同,^ 异或运算符将返回 0,如果不同,则返回 1。这就是您获得棋盘的方式 - 每次 ij 越过边界时,结果都会交替。

关于c++ - 这个 float 公式是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350705/

相关文章:

c++ - 使用 C isdigit 进行错误检查

c++ - C++ 中的 ifstream 对象数组

无法使用 floorf 将数字四舍五入到小数点后两位

c++ - 为什么设置一个 const 变量(将以相同的值存储)在划分后会导致不同的结果?

iOS 游戏工具包 : Sending floats over the wire

c++ - float 限制代码不产生正确的结果

c# - HRESULT 怎么会出现在 MIDL 文件中?

C++ 分配器 : operator new or placement new

c++ 为什么当前面的步骤抛出异常时,std::shared_ptr 的指针引用会被销毁

c++ - 为什么使用英特尔 C++ 编译器时 NaN - NaN == 0.0?