アプリ版:「スタンプのみでお礼する」機能のリリースについて

10進数で表された16を8ビットで2の補数にし、それを左に3ビット算術シフトした答えを教えてください。

A 回答 (5件)

No.4 です。

「お礼」に書かれたことについて。

>算術シフトしてはみ出した左にある111は消してもいいのでしょうか??

どのような答を求められているのかよく分かりませんが、「2の補数」を「負数」として扱うには「8ビット」に限定してそれより上の桁に「桁上がり」したものは「オーバーフロー」で捨てるということなので、その意味では「左の3桁」がオーバーフローすれば
 111 1000 0000
  ↓
 1000 0000
になりますね。

それにどんな演算上の意味があるのかは分かりませんが。
    • good
    • 1

整理すると、


・10進数の 16 を
・8 ビットの2進数にして
・その「2の補数」をとって
・それを左に3ビットだけシフトする
ということかな?

10進数の 16 を2進数にすると
 16 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 1 * 2^4 + 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 0 * 2^0
だから
 16 [10] = 0001 0000 [2]   ①

この「1の補数」は、全ビットの 0/1 をひっくり返して
 0001 0000 → 1の補数:1110 1111
「2の補数」はそれに「1」を加えて
 1111 0000    ②

これは何を意味するかといえば、元の数「0001 0000」と「2の補数:1111 0000」を加えれば
 0001 0000 + 1111 0000 = 1 0000 0000
なので「8ビット」だけを見れば「加えると 0 になる」つまり「絶対値が同じで正負の符号が違う数」どうしである。
ということは「16 [10] = 0001 0000 [2] 」なら、
 1111 0000 [2] = -16 [10]
ということになる。

あとは、指示通り②を3ビット左にシフトすれば
 111 1000 0000
    • good
    • 0
この回答へのお礼

丁寧に回答して頂きありがとうございます。算術シフトしてはみ出した左にある111は消してもいいのでしょうか??

お礼日時:2021/01/16 19:29

>10進数で表された16を8ビットで2の補数にし



これをどう捉えるかだな。普通に考えると16に2の補数表現は不要。
2の補数をビット反転とすると以下になる。

10進数:16
→8ビット2進数:00010000
→2の補数(ビット反転):11101111
→左に3ビット算術シフト:01111000
→10進数に戻す:240(答え)
    • good
    • 0

16は2進16bitで


0000 0000 0001 0000
2の補数をとると
1111 1111 1111 0000
左へ3bit算術シフトすると
1111 1111 1000 0000
    • good
    • 0

答えは何進数で表現するのでしょう。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!