[解決済み] javaで">>>"はどういう意味ですか?[重複しています]
2022-03-14 21:43:24
質問
での重複を見つけるために、こんなコードを見つけました。
SO
の投稿はこちらです。
が、この行の意味がわかりません。
int mid = (low + high) >>> 1;
private static int findDuplicate(int[] array) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
System.out.println(mid);
int midVal = array[mid];
if (midVal == mid)
low = mid + 1;
else
high = mid - 1;
}
return high;
}
解決方法は?
その
>>>
演算子は
Javaにおける符号なし右ビットシフト演算子
. これは事実上、オペランドを
2
を右オペランドのべき乗にしたもの、あるいは単に
2
ここで
との違いは
>>
と
>>>
は、負の数をシフトするときだけ表示されます。 その
>>
演算子は
1
であった場合は、最上位ビットに変換されます。
1
と、その
>>>
でシフトします。
0
を問わず。
UPDATEです。
平均化しよう
1
と
2147483647
(
Integer.MAX_VALUE
). 簡単に計算ができます。
(1 + 2147483647) / 2 = 2147483648 / 2 = 1073741824
さて、このコードで
(low + high) / 2
があり、これが関係するビットです。
1: 00000000 00000000 00000000 00000001
+2147483647: 01111111 11111111 11111111 11111111
================================================
-2147483648: 10000000 00000000 00000000 00000000 // Overflow
/2
================================================
-1073741824: 11000000 00000000 00000000 00000000 // Signed divide, same as >> 1.
に"shift"をしてみましょう。
>>>
:
1: 00000000 00000000 00000000 00000001
+2147483647: 01111111 11111111 11111111 11111111
================================================
-2147483648: 10000000 00000000 00000000 00000000 // Overflow
>>> 1
================================================
+1073741824: 01000000 00000000 00000000 00000000 // Unsigned shift right.
関連
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
IDEA パッケージステートメントの欠落
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
プロローグでのコンテンツは禁止されています
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
linux run jarfile Invalid or corrupt jarfile error.
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
Exception: java.util.NoSuchElementException: 行が見つかりません