論理シフト
logical shift
右シフト: >>
1011 >> 1 = 0101
符号付き整数への動作が異なる
-4 = 0b1111_1100
0b1111_1100 >>> 2 = 0b0011_1111 = 63
符号を考慮した動作になっている
-4 = 0b1111_1100
0b1111_1100 >> 2 = 0b1111_1111 = -1
>>> 1は2で割るのと同値の演算になる
左シフト: <<
1011 << 1 = 0110
算術/論理左シフト: <<
オーバーフローを考えない限りあんも.icon
@yuniruyuni: これめちゃめちゃ影響あって、マリオワールドのRTAプレイヤーのチャートにはちゃーんと「処理落ちを抑えるために"スコアの格桁の数字の合計値"をなるべく小さな数字にする」って書いてあります。なぜなら割り算がないので「各桁の数字をループで可能な限り引き算する」というアルゴリズムになってて、 逆数となる数字をかけてLMBを必要分だけ取ればいいので、割る数がconstantである状況なら2-3cycleで行けます。
当然、商と余りは一括で計算しましょう。
Hacker's Delightは基礎教養( ゚д゚ )クワッ!!
逆数の掛け算で割り算?あんも.icon