mid$(s$, i, 1) の代わりに s$[i] と書けます。34行はこれでスッキリするでしょう。
もっといい方法は、k = i and (1<<j) です。
1<<j は pow(2, j) と同じです。(ただし j は 0~31 までに限定)
and はビットごとの掛け算になります。二進数を表す &b を使って書くと
&b0011 and &b0101 = &b0001
になります。行を分けて欠くと
&b0011 and
&b0101 =
&b0001 '共に 1 の桁だけ 1 になる
iが &bxxxxxxxxx の時、j が 0,1,.. と変化すると
k = i and (1<<0) = i and &b1 = iの一番右の桁(0か1)
k = i and (1<<1) = i and &b10 = iの右から2番目の桁
... となります