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

10進数で表すと509で、その数値を12ビットの2の補数で表現するとどうなりますか??教えてください。

A 回答 (2件)

定義どおりにね。


509 = 2×254 + 1,
254 = 2×127 + 0,
127 = 2×63 + 1,
63 = 2×31 + 1,
31 = 2×15 + 1,
15 = 2×7 + 1,
7 = 2×3 + 1,
3 = 2×1 + 1,
1 = 2×0 + 1.
509 の 2進数表示は、あまりを並べて 111111101。
12ビットで表すなら、 000111111101。
12ビットの1の補数表現が、ビットを反転した 111000000010。
12ビットの2の補数表現は、それに 1 を足して 111000000011。
インド人や秋葉原人なら、暗算で即答するのかもしれないけど。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。理解出来ました。
質問なのですが、2進法とかを書く時に000111111101(2)というように数値の後ろに(2)と書くことがあると思うのですが、2の補数を書く時も111000000011(2)というように(2)をつけてもいいのか教えてください。

お礼日時:2021/01/17 11:56

↓ の続きですか?


https://oshiete.goo.ne.jp/qa/12146789.html

509[10] = 0001 1111 1101[2]
([ ] は「何進数か」を表します。ここでのローカルな約束であって、そういう共通的な表記があるわけではありません)

ですから、「1の補数」は全てのビットを反転させて

 1110 0000 0010

「2の補数」はそれに「1」を足して

 1110 0000 0011

です。

これは、「2の補数」を「負数」として扱う表記ということであれば、10進数では
 1110 0000 0011[2] = -509[10]
になります。


何故なら
 509 + (-509) = 0
 0001 1111 1101 + 1110 0000 0011 = 1 0000 0000 0000
となって、「13ビット目」が「オーバーフローして消滅する」ということであれば、「足すと 0 になる」からです。
(コンピュータの中では、「12ビット」で演算すれば、オーバーフローした「13ビット目」は消滅しますから)
    • good
    • 0

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