トップ その他 ITスキル体系 情報の基礎理論 数値やデータの表し方 数値表現

数値表現―負数(補数)と小数の表し方

2の補数などわかりやすい!説明を心がけて、負数(補数)と小数の表し方をまとめています。

▲記事トップへ

目次

このページの目次です。

1. 補数
2. 2進数の表現範囲
3. 浮動小数点数

知識の幅を広げるための参考
更新履歴

1. 補数

補数について説明しています。

補数とは?

補数とは、ある数を基準となる数から引いた値のことです。 2進数には、1の補数と2の補数、10進数には、9の補数と10の補数があります。

求め方

補数の求め方についてまとめています。

2の補数の求め方

元のビット列を反転させて1を足す!2進数の補数(2の補数)の求め方とその例をまとめています。

2進数の2の補数は、次の1、2の手順で求めることが出来ます。

  1. ビットをすべて反転する
  2. 反転した値に1を加える

たとえば、10進数-5.625を、小数点位置は、4ビット目と5ビット目の間とし、 負数は2の補数表現を用いて、8ビット固定小数点形式による2進数で表してみると次のようになります。

与えられた数が負なので、まず絶対値を2進表現してから2の補数に変換します。

(5.625)10=(101.101)2

次に、小数点位置を合わせて8ビット表現にします。

(101.101)2=(0101.1010)2

そして、上記を2の補数とするため、各ビットを反転させて小数桁に1を加えます。

(0101.1010)2⇒(1010.0101)2+(0000.0001)2=(1010.0110)2

よって、(1010.0110)2になります。

2. 2進数の表現範囲

負数を2の補数で表現する固定小数点表示法において、nビットで表現できる範囲は、
ー2n-1~2n-1ー1
となります。

絶対値が最大である数値を16進数で表現

負数を2の補数で表す16ビットの符号付固定小数点方式で、絶対値が最大である数値を16進数として表すと次のようになります。

16ビットの符号付小数点方式では先頭1ビットが符号となるので数値は15ビットで表されます。

15ビットで表現できる正の値は0~32767までとなり、符号を含めて負の値として表現できる範囲は-1~-32768となります。

絶対値32768を2進数で表すと16ビットで1000000000000000となり、 このビット列を反転させると0111111111111111となります。 これに1を加えると1000000000000000となり、15ビットすべてが0となります。 負の値なので符号ビットは「1」となります。

したがって、
   (1000000000000000)2=(8000)16
と表示されます。

3. 浮動小数点数

浮動小数点数は、非常に大きな数や非常に小さな数を扱う場合に使用します。 浮動小数点数の構成は次のようになっています。

浮動小数点数の構成
図 浮動小数点数の構成

たとえば0.000000000000000101×23という数値では、 仮数部のけたが不足して表現できなくなってしまいます。

そこで、指数部を調整することで仮数部の左側の0をシフトして消していきます。 このように仮数部を調整することで仮数部の左側の0を消して、 より大きな数値やより小さな数値を表現できるようにする作業を正規化といいます。

正規化の例

ここでは10進数0.25を正規化した表現を考えます。

まず10進数0.25を2進数に基数変換します。
(0.25)10 = (0.01)2

次に2進数0.01を正規化します。
(0.01)2 = (0.1)2×2-1

よって仮数部は、(10000000000)2

指数部は2を基数とし、負数は2の補数で表現します。

また、-1を2の補数で表現します。
(1111)2 = (-1)10

したがって、
  S:仮数部の符号は正なので、0となります。
  e:指数部は(1111)2です。
  f:仮数部は(10000000000)2です。

マスクビット

マスクビットとは、必要な情報を取り出すために ビットごとのAND演算を行う際に使うビットパターンのことです。

マスクとはビット列中の必要な部分のみを取り出すために必要な部分に覆いをかけてしまうという意味で、 必要部分を1、不要部分を0のビットパターンとしてAND演算を行うことで、不要部分はすべて0となり、 必要部分のビットパターンはそのまま得ることが出来きます。

たとえば、IEEE754(1985)標準では、32ビットの浮動小数点を次の形式で表現します。

この指数部を取り出すためのマスクビットを、16進数表現したものを求めると次のようになります。

指数部分のみを取り出すので、2ビット目から8ビット分のみ1となったビットパターンがマスクとなり、 それを16進数表現します。
    0111111110000000000000000000000 ⇒ 7F800000

知識の幅を広げるための参考

更新履歴

更新履歴になります。

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Jakarta EE(旧称J2EE、Java EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /FuelPHP /Lucene /MyBatis /Seasar2 /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
ActiveMQ /Tomcat /MariaDB /MySQL /Nagios /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

44.213.65.97

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク