2の補数などわかりやすい!説明を心がけて、負数(補数)と小数の表し方をまとめています。
このページの目次です。
補数について説明しています。
補数とは、ある数を基準となる数から引いた値のことです。 2進数には、1の補数と2の補数、10進数には、9の補数と10の補数があります。
補数の求め方についてまとめています。
元のビット列を反転させて1を足す!2進数の補数(2の補数)の求め方とその例をまとめています。
2進数の2の補数は、次の1、2の手順で求めることが出来ます。
たとえば、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の補数で表現する固定小数点表示法において、nビットで表現できる範囲は、
ー2n-1~2n-1ー1
となります。
負数を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
と表示されます。
浮動小数点数は、非常に大きな数や非常に小さな数を扱う場合に使用します。 浮動小数点数の構成は次のようになっています。
図 浮動小数点数の構成
たとえば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インフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
3.145.196.150
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…