dポイントプレゼントキャンペーン実施中!

16進数のEFを10進数にしたとき、8進数にしたとき、どのようになるか知りたかったので下記のサイトで変換したところ、
https://note.cman.jp/convert/bit/


8進数
357

10進数
-17

という結果になりました。しかし自分で計算したところ、10進数のみ239という答えになりました。
「符号付き」というチェックボタンを「符号なし」にしたところ10進数でも239となりました。
先頭のbitが1のとき、つまりEFが負数だったときに-17になるということですがこの"先頭のbit"というのは、EFに含まれているのか、それとも1EFという形だけれども省略しているのかどちらなのでしょうか。

また、符号付きをチェックしたさい、先頭のbitが1になったのはなぜなのでしょうか。単なる仕様なのか、先頭bitは、基本的に何も言われない時は、1として扱うのかどちらなのでしょうか。

A 回答 (2件)

16進数の「EF」は、2進数なら「1110 1111」です。



これを8進数にすると、桁の区切りを「 11 101 111」に替えて「357」になります。これは単に機械的な操作でできます。
おそらくお示しのサイトでは、「011 101 111」と区切って計算しているのだと思います。(3桁ごとに区切ると1桁足りなので、先頭桁に「0」を補っている)

10進数に替えるには、ふつうに計算すれば
 14 * 16^1 + 15 * 16^0 = 239
になります。
お示しのサイトでも、16進数「00EF」と入れれば、「符号付き」でもきちんと計算します。

お示しのサイトでは、換算する「進数」によっては、「符号付き」にすると最初のビットを「符号」とみなしてしまうのだと思います。
16進数の「EF」を10進数に変換するときに、2進数の1桁目を「符号」とみなして、「EF」を「+EF」ではなく「-11」とみなしているということです。
(16進数の「11」= 2進数で「0001 0001」→「1の補数」で符号反転「1110 1110」→ 「2の補数」にするため +1 して「1110 1111」=16進数の「EF」ですから)

単なる、そのサイトでの計算アルゴリズムの問題だと思います。
    • good
    • 1

まず、16進数というのは、2進数の別表現です(2進数は長いので4桁ずつまとめただけ)


そして、ef を 2進数で表すと 1110 1111 です。最初は、'1' ですね。
これを、符号ビットと見なすのが、「符合付き」
符合付きの表現方法もいくつかありますが、現在は2の補数表示が主流です。
同じサイトに、解説ページがありますので、確認してください。

また、上記のページの中にも、符合付きの値を負の10進表示するプロセスが解説されているので、確認してください。

そして、「符号付きをチェックしたさい、先頭のbitが1になった」のは、何かの間違いか勘違いです。
    • good
    • 1

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