浮動小数点を16進数で表すときは、2進数をどこから区切っていくの?

データ表現 No Comments »

浮動小数点を2進数で表したら、先頭から単純に4桁ごとに区切っていきます。コンピュータ内部では2進数のビットで扱っていますが、2進数のビット表現では表記が長くなるので4桁ずつに区切って16進数に変換しています。ただそれだけのことです。コンピュータのダンプリスト(コンピュータの主記憶装置、あるいは外部記憶装置の内容を出力すること)は16進表記で表示されます。

1 10000100 00011011・・・ →  1100 0010 0000 1101 1000 ・・・(4桁ごと)

→ C20D8000(16進数)

資格の学校TACの情報処理・シスアド

Java テクノロジーの広い知識を証明する認定資格

浮動小数点で使用するバイアス方式と2の補数方式では値が違ってきますか?

データ表現 No Comments »

これは違ってきます。単精度浮動小数点で考えた場合、指数は8ビットです。-1乗の場合でそれぞれ考えて見ましょう。バイアス方式の場合、01111110となります。2の補数において-1は11111111となります。ですから指数の表現形式によって値が異なります。試験ではバイアス方式と2の補数方式のどちらも出てくるので、どちらでも計算できるようにしておきましょう。

無限大やNaN 11111111
+127乗 11111110




+1乗 10000000
0乗 01111111
-1乗 01111110




-126乗  
非正規化数を表現 00000000

バイアス方式

+127乗 01111111




+1乗 00000001
0乗 00000000
-1乗 11111111




-128乗 10000000

2の補数表現

資格の学校TACの情報処理・シスアド

Java テクノロジーの広い知識を証明する認定資格

浮動小数点のバイアス方式がよくわかりません

データ表現 No Comments »

IEEEで使用される指数のバイアス方式は、通称ゲタばきと言われる方式です。浮動小数点には単精度浮動小数点と倍精度浮動小数点があります。これはそれぞれC言語のfloat,doubleに相当します。
単精度の浮動小数点はテキストにも出てきた、符号1ビット、指数8ビット、仮数23ビットとなります。IEEEの単精度浮動小数点は指数8ビットで表します。8ビットで表現できるのは絶対値で0~255です。指数は負数もあるので、これを正と負に分けて表現します。つまり、0~126までが負数、127を0、128~255までを正数として扱うようにしたものがバイアス方式となります。そのため、126を-1乗、128を+1乗として格納するのです。実際に計算するときは、指数に127を足し算すると格納する整数を求めることができます。

倍精度浮動小数点の場合は、符号1ビット、指数11ビット、仮数52ビットとなっています。指数が11ビットですので、表現できる数は絶対値で0~2047までです。この場合は0~1022までが負数、1023が0、1024~2047までが正数として表現します。実際に計算するときは指数に1023を足し算すると格納する整数を求めることができます。

fudo1.jpg

浮動小数点数の指数

このようにバイアス方式では指数を何ビットにするかにより、足し算する数が違ってきます。この値のことをバイアス値(通称:ゲタ)と呼んでいます。

資格の学校TACの情報処理・シスアド

Java テクノロジーの広い知識を証明する認定資格

1の補数と2の補数の違いがわかりません

データ表現 No Comments »

1の補数に1を足したものが2の補数になります。コンピュータで負数を表現するときは2の補数を使用します。その理由は1の補数では+0と-0の2種類があり、表現できる数の範囲が2の補数よりも少ないためです。4ビットでデータを表現する場合は、2の補数で-8~+7まで表現することができますが、1の補数では-7~+7までしか表現できません。したがって、コンピュータで負数の表現は2の補数が使用されると考えてください。
試験では、1の補数は-0と+0の2種類があることを聞かれることがあるので、覚えておいてください。

資格の学校TACの情報処理・シスアド

Java テクノロジーの広い知識を証明する認定資格

2の補数が全般的によくわからないです

データ表現 No Comments »

まず、2の補数は「コンピュータでの負数を表現するために使用されている」ことを理解しておきましょう。コンピュータは有限の数しか扱うことができないので、限られたビットで正と負を表現しなければなりません。例えば、4ビットの場合で正と負を表すと、以下の表のように-8~+7まで表すことができます。

+7 0111
+6 0110
+5 0101
+4 0100
+3 0011
+2 0010
+1 0001
0 0000
-1 1111
-2 1110
-3 1101
-4 1100
-5 1011
-6 1010
-7 1001
-8 1000

4ビットでの2の補数表現

4ビットでも正と負を考えなれば(絶対値)、0~15まで表現することができます。4ビットの2の補数では「1001」は「-7」ですが、絶対値では「9」になります。したがって、正と負の両方を表現するのか正だけ表現するのかでビット意味が違ってきます。試験では「2の補数」という言葉が出てきたら正と負の両方を表現すると考えてください。

15 1111
14 1110
13 1101
12 1100
11 1011
10 1010
9 1001
8 1000
7 0111
6 0110
5 0101
4 0100
3 0011
2 0010
1 0001
0 0000

4ビットの絶対値での表現(符号なし)

C言語ではshort,int,longで変数を宣言すると正と負の両方を表すためにビットを使用しています。short型は2バイト(16ビット)であり、-32768~32767まで扱うことができます。また、unsigned shortと宣言すると負の扱いができません。したがって、2バイトで0~65535まで扱うことになります。

資格の学校TACの情報処理・シスアド

Java テクノロジーの広い知識を証明する認定資格

教科書p22の「10の10乗-1≦2のx乗-1」という不等式がなぜ成り立つのかわからない

データ表現 No Comments »

例えば0~999までの10進数をコンピュータで表現するときに何ビット必要かを考えてみましょう。みなさんは2の10乗は1024(最大値は1023)だと知っているので、10ビットだとすぐわかります。9ビットでは2の9乗で512(最大値511)で数が足りません。では、0~9999までの10進数を表現するために必要なビット数は聞かれるとすぐにはわからないと思います。2の13乗が8192であり、2の14乗は16384です。ですので、必要なビット数は14ビットとわかるでしょう。大きな数を表すときのビット数を求めるために、2の乗数を計算していたのでは大変です。ここでlogが登場するのです。10の4乗-1≦2のx乗-1としたのときxを求める必要があります。そのため両辺の対数を取ってxを計算します。0~9999999999までの10進数を表すため必要なビット数を求めたいと考えれば、「10の10乗-1≦2のx乗-1」という式で求めることがわかると思います。

資格の学校TACの情報処理・シスアド

Java テクノロジーの広い知識を証明する認定資格



   Designed By:  Sadh Web Directory     Sponsered By:   BrainBloggers  & Linkature

Entries RSS Comments RSS