在 JavaScript 中以二进制级别计算

Calculating at binary level in javascript

本文关键字:计算 二进制 JavaScript      更新时间:2023-09-26

在我的2D环境中,玩家可以对角线,水平和垂直移动。查看下面的网格时,您可以看到玩家(标记为 x(可以从他(或她 xD(现在的位置移动到 8 个不同的位置。

 1 | 2 | 3
-----------
 4 | x | 5
-----------
 6 | 7 | 8

而不是将其存储为(这是大量数据(:

Go1 = true;
Go2 = true;
Go3 = true;
Go4 = true;
Go5 = true;
Go6 = true;
Go7 = true;
Go8 = true;

我认为最好先将其转换为:

11111111 

..这代表了 8 倍真实。考虑到这一点,并且知道二进制数的十进制表示11111111(8 位(等于数字:255我宁愿转换它并将当前可能移动到的位置存储为 255 .

法典:

x = parseInt(11111111);
var bin = x.toInt(2);
document.write(bin);​

这意味着,如果在(例如(位置(1、4 和 6(= 玩家左侧有一堵墙,则玩家只能移动到:

01101011

可以存储为:107 .

假设玩家想要移动到位置3。这意味着我的脚本必须执行以下操作:

  1. 将 3 位当前可能移动到的位置数转换回二进制
  2. 从该二进制代码中获取第三个数字
  3. 检查该数字是 1 还是 0

问题:是否可以在不在 Javascript 中来回转换为二进制的情况下计算这一点?如果是,如何?

位移,使相关数字最不重要,然后测试值的奇偶校验:

function getPositionInRow(rowval, pos) {
    return (rowval >> (8 - pos)) % 2;
}

这将返回指定位置的值,从左侧开始计数,从 1 开始索引。