int 型を使用して unsinged int 型の右シフト演算を実装する_PHP チュートリアル

WBOY
リリース: 2016-07-21 14:55:33
オリジナル
1103 人が閲覧しました

PHP など、unsinged int を持たないスクリプト言語はたくさんあります。一般に、int と unsinged int のビット演算に違いはありません。ただし、右シフト演算を除き、int には 1 が埋められ、unsinged int には 0 が埋め込まれます。長い間考えましたが、最終的により良い方法を思いつきました。ただし、この方法では、右シフトの数は少なくとも 1 より大きくなります。一般に、0 ずつ右にシフトすることはほとんど意味がありません。

(($a >> 1) & 0x7fffffff) >> ($n -1) ここで、$n は右シフトの数です。 $n >= 1

たとえば、md5 暗号化を実装するには、一般的に次の関数が使用されます。これは、PHP では次のように実装できます。

クリップボードにコピー引用コンテンツ: Liehuo.Net Codes[www.bkjia.com] 関数 RotateLeft($a, $n) {
return ($a << $n) ((($a >> 1) & 0x7fffffff) >> (31 - $n));演算子の優先順位に注意してください
}
暗号化と復号化に興味がある人は、私と同じ問題に遭遇したことがあるかもしれません。誰かがより良い方法を持っているのではないかと思います。

http://www.bkjia.com/PHPjc/364403.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/364403.html技術記事 PHP など、unsinged int を持たないスクリプト言語は数多くあります。ビット演算 一般的に、int の 1 の補数である右シフト演算を除いて、int と unsinged int の間に違いはありません。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート