对于像C#中的ulong这样的有意溢出结构的本质,我有些困惑。使用算术运算符包装ulong变量
本质上我正在做一个网格,我想成为ulong.max X ulong.max方块。如果我在坐标上执行算术运算,我希望它自动换行到网格的另一侧。然而,看起来如果我将两个ulpon放在一起并导致溢出,那么我最终会得到零,而不是我所拥有的任何“模数(ulong.max)”。也许我误解了当我溢出64位ulong时会发生什么。
任何关于如何为网格创建包装坐标系统的帮助,允许数字自动回绕会很好。也许这是不可能的?
我喂养在 “多头” 和将它们转换为 “ulongs” 逐位与像坐标结束:
(-1,0)=(0xFFFFFFFF的,00000000)
(-2 ,0)=(0xFFFFFFFE,0x00000000)
无论如何,任何关于如何构建完全包装坐标网格的指针都会有所帮助。也许我的大脑根本不在今天工作,我错过了一些显而易见的事情,导致它在高倍数上失效。
由于某种原因,我的perlin生成器只是在long已被转换(按位)为ulong之后拖动任何坐标“0以下”。 – ThisHandleNotInUse 2015-02-06 14:53:45
@ThisHandleNotInUse:我不知道任何“perlin生成器”,但如果你的代码不符合你的期望,它会很方便将其视为一个简短但完整的计划。 – 2015-02-06 14:54:53
这就像300线,所以我没有发布它,因为它是为特定用途修改的perlin生成器。我不知道该怎么定位我的错误 - 我制作的最后一个发生器将它封装在一个更小的间隔中,这样做并没有什么大不了的,因为这些数字从来没有试图将自己扩展为“溢出”/环绕。 – ThisHandleNotInUse 2015-02-06 15:09:20