jedis源码RedisOutputStream.class的问题。

在这个类中的 writeIntCrLf(int value)函数中这段代码很不理解是什么意思。
代码:
while (value >= 65536) {
q = value / 100;
r = value - ((q << 6) + (q << 5) + (q << 2));
value = q;
buf[--charPos] = DigitOnes[r];
buf[--charPos] = DigitTens[r];
}

for (;;) {
  q = (value * 52429) >>> (16 + 3);
  r = value - ((q << 3) + (q << 1));
  buf[--charPos] = digits[r];
  value = q;
  if (value == 0) break;
}
count += size;

关键点
q = value / 100; // 获取百位以及以上的数字,65536的话,q=655,而不是q=655.36
r = value - ((q << 6) + (q << 5) + (q << 2)); // q<<6是位运算,左移6位,相当于q*64,整个语句就是r=value-(q*64+q*32+q*4),结果就是刚刚百位以下的数字,36