Будьте предельно осторожны. Javascript не имеет целых чисел - числа хранятся как 64-битные с плавающей точкой. Вы должны получить точное преобразование в 52 бита. Если вы получите больше флагов, чем это, плохие вещи произойдут, когда ваше «число» будет округлено до ближайшего представимого числа с плавающей запятой. (Ой!)
Кроме того, побитовая манипуляция не поможет производительности, потому что число с плавающей запятой будет преобразовано в целое число, проверено, а затем преобразовано обратно.
Если у вас есть несколько мест, где вы хотите проверить флаги, я бы установил флаги для объекта, желательно с именами, например:
var flags = {};
flags.use_apples = map.charAt(4);
flags.use_bananas = map.charAt(10);
и т.д ...
Затем вы можете проверить эти флаги внутри вашего цикла:
if(flags.use_apples) {
do_apple_thing();
}
Тестирование слота объекта будет быстрее, чем битовая проверка, поскольку Javascript не оптимизирован для битовых операторов. Однако, если ваш цикл медленный, я боюсь, что декодирование этих флагов, вероятно, не является источником медлительности.