書籍に
:ビットを右にシフト
例
1010>>1 → 5
:ビットを右にシフト、かつ、左端を0で埋める。
と書いてあります。
「>>」で右にシフトしたら、左端には0は無く、何もない状態になるのですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
以下、ビット演算子 - JavaScript | MDNより引用
符号を維持する右シフト:
a >> b
2進表現のa
をb
(<32
)ビット分だけ右にシフトします。あふれたビットは破棄します。0埋め右シフト:
a >>> b
2進表現のa
をb
(<32
)ビット分だけ右にシフトします。あふれたビットは破棄し、左から0を詰めます。
>>
で右にシフトしたら、左端には0は無く、何もない状態になるのですか?
左端のビットがコピーされます。
左端のビットは符号ビットで、正の値の場合は0、負の値の場合は1なので>>
でのビットシフトでは、値の正負は変化しません。
javascript
19 >> 2 2//2 3-9 >> 2 4//-3 59 >>> 2 6//2 7-9 >>> 2 8//1073741821
投稿2017/11/09 11:32
総合スコア158
0
ベストアンサー
2進数表記
1010>>1 → 5
上記を成立させるには、1010
の先頭に 0b
が必要ですね。
JavaScript
1console.log(0b1010>>1 === 0b0101); // true
ゼロパディング
「>>」で右にシフトしたら、左端には0は無く、何もない状態になるのですか?
数値の左側がゼロ埋めされていても、ゼロ埋めされていなくても、評価される数値は同じです。
JavaScript
1console.log(0b1010>>1 === 0b0101); // true 2console.log(0b1010>>1 === 0b101); // true 3console.log(0b101 === 0b0101); // true
Re: yuki1111 さん
投稿2017/11/09 14:10
総合スコア18162
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
小数点以下は切り捨てですね。
最終的に0になります。
JavaScript
110>>1 2// 5 3 410>>2 5// 2 6 710>>3 8// 1 9 1010>>4 11// 0
投稿2017/11/09 10:39
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。