PHP など、unsinged int を持たないスクリプト言語はたくさんあります。一般に、int と unsinged int のビット演算に違いはありません。ただし、右シフト演算を除き、int には 1 が埋められ、unsinged int には 0 が埋め込まれます。長い間考えましたが、最終的により良い方法を思いつきました。ただし、この方法では、右シフトの数は少なくとも 1 より大きくなります。一般に、0 ずつ右にシフトすることはほとんど意味がありません。
(($a >> 1) & 0x7fffffff) >> ($n -1) ここで、$n は右シフトの数です。 $n >= 1
たとえば、md5 暗号化を実装するには、一般的に次の関数が使用されます。これは、PHP では次のように実装できます。
クリップボードにコピー引用コンテンツ:
[www.bkjia.com]
関数 RotateLeft($a, $n) {
return ($a << $n) ((($a >> 1) & 0x7fffffff) >> (31 - $n));演算子の優先順位に注意してください
}
暗号化と復号化に興味がある人は、私と同じ問題に遭遇したことがあるかもしれません。誰かがより良い方法を持っているのではないかと思います。
http://www.bkjia.com/PHPjc/364403.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/364403.html技術記事 PHP など、unsinged int を持たないスクリプト言語は数多くあります。ビット演算 一般的に、int の 1 の補数である右シフト演算を除いて、int と unsinged int の間に違いはありません。