SlideShare a Scribd company logo
計算機理論入門4
       2012年度後期
         垂水共之
 tarumi@ems.okayama-u.ac.jp
 浮動小数点表現(つづき)
        文字の表現
       20121022 講義後追加
浮動小数点の表現
• IEEE754 交換形式

  – 符号ビット
  – 指数部
     • 下駄上げ表現

  – 仮数部
     • 絶対値表現
32bits単精度

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9   8   7   6   5   4   3   2   1   0



符      指数部(8ビット)                                 仮数部(23ビット、ケチ表現)
号



    • 指数部 8ビット
       –   下駄 01111111
       –   1~254
       –   0のとき、仮数部0であればゼロ
       –   255のとき、無限大(仮数部0)、またはNaN(仮数部 非0
           )
    • 仮数部 23ビット
       – 絶対値表現
       – 1.xxxxに正規化し、頭の1は記録しない(ケチ表現)
    64bits倍精度                        128bits4倍精度
         指数部 11ビット                       指数部 15ビット
         仮数部 52ビット                       仮数部 112ビット
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9                          8       7       6       5       4       3       2       1       0

 0   0   1   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0       0       0       0       0       0       0       0       0       0

符        指数部(8ビット)                                               仮数部(23ビット、ケチ表現)
号

     3               F               8               0               0               0                           0                               0

 0   0   1   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0       0       0       0       0       0       0       0       0       0




                     3F800000                10進数に直すと?




                 10進数の-118.625はどんなビット配列になるかな?
1.25(10) =1.01(2) =1.01(2)×20
2.5(10)   =10.1(2) =1.01(2)×21
0.625(10) =0.101(2) =1.01(2)×2-1

仮数部 1.01
仮数部の表現 ケチ表現 整数部の1は省く
    .010000000・・・0

指数部 0, 1, -1
指数部の表現 下駄上げ表現                                     下駄=01111111 (2)
     0 01111111+0                 =01111111
     1 01111111+1                 =10000000
     -1 01111111-1                =01111110
符         指数部(8ビット)                                               仮数部(23ビット、ケチ表現)
号


 0   0    1   1   1   1   1   1   1   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

      3               F               A               0               0               0               0               0


 0   1    0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

      4               0               2               0               0               0               0               0


 0   0    1   1   1   1   1   1   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

      3               F               2               0               0               0               0               0
零と非数値


符       指数部(8ビット)                                               仮数部(23ビット、ケチ表現)
号


0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

    0               0               0               0               0               0               0               0           +0


1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

    8               0               0               0               0               0               0               0           -0


0   1   1   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

    7               F               8               0               0               0               0               0           +∞


1   1   1   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

    F               F               8               0               0               0               0               0           -∞


0   1   1   1   1   1   1   1   1                                   少なくとも 1 ビットは1
    7               F               8                                                                                           NaN
0.1(10)
• 0.1(10)=0.000110011001100110・・・(2)
         =1.10011001100110011・・・(2)×2-4



• 指数部                                    4(10)=100(2)
            –       01111111
                 -)         100
                 ----------------
                    01111011


符               指数部(8ビット)                                                            仮数部(23ビット、ケチ表現)
号


0   0       1    1   1   1       0   1   1   1       0   0   1   1       0   0   1    1       0   0   1   1       0   0   1   1       0   0   1   1       0   0

        3                    D                   C                   C                    C                   C                   C                   C           0.1
2012.625
16 ) 2012
                                                                         0.625
      125 ... 12
                                                                       x     2
                                                                         1.250
     16 )125
                                                                       x     2
           7 ... 13
                                                                         0.500
                                                                       x     2
2012(10)=7DC(16)                                                                                            0.625(10)=0.101(2)
                                                                         1.000
   = 111 1101 1100(2)

2012.625(10)= 111 1101 1100.101(2)                                                                           指数部
            =1.11 1101 1100 101(2)×210                                                                       10(10)=1010(2)

                                                                                                               0111 1111 下駄
                                                                                                             +)     1010
                                                                                                               1000 1001
 符
 号                指数部(8ビット)                                                            仮数部(23ビット、ケチ表現)


 0    1       0    0   0   1       0   0   1   1       1   1   1   0       1   1   1    0       0   1   0    1

          4                    4                   F                   B                    9                    4     0         0
文字の表現
• バイト:文字の記憶単位

• 1B=7bits (米国、英国)
  – 00から7Fまで128種類のビットパターン
  – アルファベット 大文字(26文字)、小文字(26文字)
  – 数字 0123456789 (10文字)
  – 記号等( 空白 + - * / = @ : ; ! " # $ % & ' ~ | ^ ? < > _ , . ) (27文字 or
    more)
  – 制御文字(非印刷文字、改行、タブ、・・・) (32文字)
• 1B=8bits (その他のラテン系、日本)
  – 00からFFまで256種類のビットパターン
     • 00から7Fまでは基本的に上と同じ
  – 80からFFまでに固有の文字
  – 日本ではカタカナ(ア・・・ンなど) (49文字or more)
ANK文字
• Alphabet
   – 大文字、小文字
• Numeric
   – 数字
• Kana
   – カタカナ文字


• 英数字
   – Alphabet+numeric
                                注意:英数字等のANK文字には
                                    全角と半角とがある。
• 全角文字、半角文字
   – 全角文字:漢字・ひらがな等の日本語文字
   – 半角文字:英数字等の半分の幅で表される文字
   – 昔、固定幅の文字サイズが、漢字・ひらがな等の日本語文字、
     英数字の倍の幅を使っていた。
英字    A,B,C,・・・,Z        英数と数字
をまとめて
数字      0,1,2,・・・,9      「英数字」
という
特殊文字    .(ピリオド,点)    ,(コンマ)   _(ブ
ランク)
        +(プラス) -(マイナス)        *(ア
スタリスク,星)
          /(スラッシュ)    =(等号)   ((開
きカッコ)
           )(閉じカッコ) :(コロン) ;
(セミコロン)
           ´(くさび,引用符,シングルクオーテ
ーション)
文字コード体系
• JIS
 – Japan Industrial Standard
 – 日本工業規格
• EBCDIC
 – Extended Binary Coded Decimal Interchage Code
 – EBCDIK       EBCDIC with Kana
• ISO
 – International Organization for Standardization
 – 国際標準化機構
• ASCII
 – American Standard Code or Information Interchange
ANK文字コードの例



(例)         JIS(16進)   EBC
DIC(16進)
      A      41
C1
      B      42
C2
     ブランク   20
40
      0      30
F0
      1      31
F1
      ・
      ・
      9      39
F9
JIS8ビットコード表
                                        上位4ビット
         0    1    2    3   4   5   6    7   8   9   A   B   C   D   E   F
     0        DE   SP   0   @   P   `    p               -   タ   ミ
     1   SH   D1   !    1   A   Q   a    q           。   ア   チ   ム
     2   SX   D2   "    2   B   R   b    r           「   イ   ツ   メ
     3   EX   D3   #    3   C   S   c    s           」   ウ   テ   モ
     4   ET   D4   $    4   D   T   d    t           、   エ   ト   ヤ
     5   EQ   NK   %    5   E   U   e    u           ・   オ   ナ   ユ
     6   AK   SN   &    6   F   V   f    v           ヲ   カ   ニ   ヨ
下位
4    7   BL   EB   '    7   G   W   g    w           ァ   キ   ヌ   ラ
ビッ   8   BS   CN   (    8   H   X   h    x           ィ   ク   ネ   リ
ト
     9   HT   EM   )    9   I   Y   i    y           ゥ   ケ   ノ   ル
     A   LF   SB   *    :   J   Z   j    z           ェ   コ   ハ   レ
     B   HM   EC   +    ;   K   [   k    {           ォ   サ   ヒ   ロ
     C   CL        ,    <   L      l    |           ャ   シ   フ   ワ
     D   CR        -    =   M   ]   m    }           ュ   ス   ヘ   ン
     E   SO        .    >   N   ^   n    ~           ョ   セ   ホ   ゛
     F   SI        /    ?   O   _   o                ッ   ソ   マ   ゜
「数値」と「数字」
• 計算機では文字としての「数字」と「数値」とは異なる
• “12”という文字は次のように記録される(JISコー
  ド)
 –   [1]   0011 0001 0011 0010
 –           3    1    3    2
• 数値としての12 は固定小数点方式では
 –   [2]   0000 0000 0000 1100
 –           0    0    0    C
• [1]を固定小数点方式で解釈すれば12594となる
 (ちなみにEBCDICコードのF1F2を同様に解釈すれば-3086
 となる)。
• 計算機は(バカであるがゆえに)記録されているbit
  列が文字列か,数値なのかを判別することはできない。
• これを判別するのは人間(プログラマ-)の役割であり
  ,この違いを認識してプログラムを作らなければならな
• (注)さらに 先に述べた機械語で表現された命令と上
  の数値,文字列を区別するのも人間の役割であり,計算
  機は区別することはできない。
漢字の表現形式
• 1B=8bitsでは256種類、漢字には少なすぎる!
• 2B=16bitsでは65,536種類

• 漢字(多言語文字)の表現形式
 –   JIS
 –   Shift-JIS
 –   EUC-JP
 –   Unicode
       • UTF-8
       • UTF-16
       • UTF-32
JIS   漢字の表現形式
•   教育用漢字         1,006字
•   当用漢字          1,850字(常用漢字に変更される)
•   人名用漢字         285字
•   常用漢字          2136字/4388音訓
•   JIS漢字コード
    –   JIS第1水準   2,965字 音読み順
    –   JIS第2水準   3,390字 部首画数順
    –   JIS第3水準   1,259字
    –   JIS第4水準   2,436字
    –   非漢字       1,183字
JIS   つづき
• ANKとの調和
  – 漢字イン        Esc$B
  – 漢字アウト
     • Esc(J    ANKへ
     • Esc(B    ASCII
     • ESC(J    JIS X 0201-1976 Roman
     • ESC$@    JIS X 0208-1978 (旧JIS)
     • ESC$B    JIS X 0208-1983 (新JIS)


• 例               平成24年10月30日
               [KI]平成[KO]24[KI]年[KO]10[KI]月[KO]30[KI]日
  [KO]
• バイト数         3 22     3 2 3 2          3 2 3 2   3 2 3 2 3
Shif JIS コード
• ANKの未使用領域 80-9F, E0-FF に
  JISコードの1B目を移し(シフト)、
  JISコードの2B目はそのまま

• 漢字イン、漢字アウト無しで、ANK文字と共存可能

• 注意:
  – 漢字コードの2B目にはANK文字と同じコードも出てくる。
  – 文字列の先頭から見て行けば、ANK文字か漢字かは判別可能。
  – 文字列の途中からは判別不可能!
EUC-JP Extended Unix Code
• ASCII     00-7F (1B)
• 漢字        A1A1-FEDF (2B) JIS漢字コードの各バイトに80
  を加
• 半角カナ      8EA1-8EDF (2B)
• 補助漢字      8FA1A1-8FFEFE (3B)

• 1文字が 1B~ 3B
     code set 0: ASCII
                       1Bコード 7bits JIS
     code set 1: JIS90漢字コードに相当 2Bコード
                       JIS90の各バイトに128(x80)を加えたもの
     code set 2: カタカナ
                       2Bコード、1B目はx8Eに固定、2B目のxA1~xFEを使用
     code set 3: 補助漢字
                       3Bコード、1B目はx8Fに固定、2B,3B目はxA1~xFEを使用
Unicode
• 漢字に限らず、世界中の文字を統一的に扱う企画
• 16bitsで体系化を始める
  – 基本多言語面(BMP)
• 21bits 体系化へ

• CJK Han Unicication 統合漢字   (Chinese, Japanese, Korean)
  – 中国語、日本語、朝鮮語の漢字
符号化方式
• UTF-8
  – インターネットで一番よく利用されている
  – 1B~4Bの可変長
     • ASCII上位互換


• UTF-16
  – BMP文字は16bitsで
  – その他の文字は16bitsペア(32bits)
  – Windows内部表現で利用されている


• UTF-32
  – すべての文字を32bitsの固定長で表現
     • 実際使われているのは21bits
例
• 「愛」
 –   JIS         1b 24 42 30 26 1b 28 42
 –   Shift JIS   88 a4
 –   EUC-JP      b0 a6
 –   UTF-8       e6 84 9b
• 「あ」
 –   JIS         1b 24 42 24 22 1b 28 42
 –   Shift JIS   82 a0
 –   EUC-JP      a4 a2
 –   UTF-8       e3 81 82
• 「A」(ANK文字)
 –   JIS         ?
 –   Shift JIS   ?
 –   EUC-JP      ?
 –   UTF-8       ?

More Related Content

Viewers also liked

浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版
Yoshio Hanawa
 
Cvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 halfCvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 half
tomoaki0705
 
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
technologicarts
 
図解入門最新マーケティング・リサーチがよーくわかる本(3)
図解入門最新マーケティング・リサーチがよーくわかる本(3)図解入門最新マーケティング・リサーチがよーくわかる本(3)
図解入門最新マーケティング・リサーチがよーくわかる本(3)MROC Japan
 
整数列圧縮
整数列圧縮整数列圧縮
整数列圧縮JAVA DM
 
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4Takeshi Yamamuro
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会
Tetsuya Yoshida
 
kagami_comput2015_12
kagami_comput2015_12kagami_comput2015_12
kagami_comput2015_12swkagami
 
科学技術コミュニケーションの原点と座標軸20150517(本編)
科学技術コミュニケーションの原点と座標軸20150517(本編)科学技術コミュニケーションの原点と座標軸20150517(本編)
kagami_comput2016_08
kagami_comput2016_08kagami_comput2016_08
kagami_comput2016_08
swkagami
 
kagami_comput2016_09
kagami_comput2016_09kagami_comput2016_09
kagami_comput2016_09
swkagami
 
kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06
swkagami
 
kagami_comput2016_07
kagami_comput2016_07kagami_comput2016_07
kagami_comput2016_07
swkagami
 
kagami_comput2016_05
kagami_comput2016_05kagami_comput2016_05
kagami_comput2016_05
swkagami
 
3_C言語入門 - C言語の基本
3_C言語入門 - C言語の基本3_C言語入門 - C言語の基本
3_C言語入門 - C言語の基本
bc_rikko
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010
Hiroshi Tokumaru
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
 
大森ゼミ新歓
大森ゼミ新歓大森ゼミ新歓
大森ゼミ新歓
T Nakagawa
 
kagami_comput2016_03
kagami_comput2016_03kagami_comput2016_03
kagami_comput2016_03
swkagami
 
kagami_comput2016_04
kagami_comput2016_04kagami_comput2016_04
kagami_comput2016_04
swkagami
 

Viewers also liked (20)

浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版
 
Cvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 halfCvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 half
 
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
 
図解入門最新マーケティング・リサーチがよーくわかる本(3)
図解入門最新マーケティング・リサーチがよーくわかる本(3)図解入門最新マーケティング・リサーチがよーくわかる本(3)
図解入門最新マーケティング・リサーチがよーくわかる本(3)
 
整数列圧縮
整数列圧縮整数列圧縮
整数列圧縮
 
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会
 
kagami_comput2015_12
kagami_comput2015_12kagami_comput2015_12
kagami_comput2015_12
 
科学技術コミュニケーションの原点と座標軸20150517(本編)
科学技術コミュニケーションの原点と座標軸20150517(本編)科学技術コミュニケーションの原点と座標軸20150517(本編)
科学技術コミュニケーションの原点と座標軸20150517(本編)
 
kagami_comput2016_08
kagami_comput2016_08kagami_comput2016_08
kagami_comput2016_08
 
kagami_comput2016_09
kagami_comput2016_09kagami_comput2016_09
kagami_comput2016_09
 
kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06
 
kagami_comput2016_07
kagami_comput2016_07kagami_comput2016_07
kagami_comput2016_07
 
kagami_comput2016_05
kagami_comput2016_05kagami_comput2016_05
kagami_comput2016_05
 
3_C言語入門 - C言語の基本
3_C言語入門 - C言語の基本3_C言語入門 - C言語の基本
3_C言語入門 - C言語の基本
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
大森ゼミ新歓
大森ゼミ新歓大森ゼミ新歓
大森ゼミ新歓
 
kagami_comput2016_03
kagami_comput2016_03kagami_comput2016_03
kagami_comput2016_03
 
kagami_comput2016_04
kagami_comput2016_04kagami_comput2016_04
kagami_comput2016_04
 

Similar to 計算機理論入門04

フォントのしくみ
フォントのしくみフォントのしくみ
フォントのしくみ
amusementcreators
 
第9回名古屋Cvprml勉強会
第9回名古屋Cvprml勉強会第9回名古屋Cvprml勉強会
第9回名古屋Cvprml勉強会
Yutaka Yamada
 
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasJulio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasjoseadalberto
 
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasJulio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasAdalberto
 
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasJulio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasguest3d4d50a4
 
住建在庫棚卸データ集計処理のやり方
住建在庫棚卸データ集計処理のやり方住建在庫棚卸データ集計処理のやり方
住建在庫棚卸データ集計処理のやり方
Atsushi Ikehara
 
RによるBox-Cox変換
RによるBox-Cox変換RによるBox-Cox変換
RによるBox-Cox変換wada, kazumi
 
「0がn個続いたあと1がn個続く」を正規表現にできるか?
「0がn個続いたあと1がn個続く」を正規表現にできるか?「0がn個続いたあと1がn個続く」を正規表現にできるか?
「0がn個続いたあと1がn個続く」を正規表現にできるか?tanukingUb
 
Estado del ejer. 2009
Estado del ejer. 2009Estado del ejer. 2009
Estado del ejer. 2009nera24mx
 

Similar to 計算機理論入門04 (10)

フォントのしくみ
フォントのしくみフォントのしくみ
フォントのしくみ
 
第9回名古屋Cvprml勉強会
第9回名古屋Cvprml勉強会第9回名古屋Cvprml勉強会
第9回名古屋Cvprml勉強会
 
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasJulio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
 
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasJulio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
 
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulasJulio Control D Enotas Por Materia Y Trimestre Con FóRmulas
Julio Control D Enotas Por Materia Y Trimestre Con FóRmulas
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
住建在庫棚卸データ集計処理のやり方
住建在庫棚卸データ集計処理のやり方住建在庫棚卸データ集計処理のやり方
住建在庫棚卸データ集計処理のやり方
 
RによるBox-Cox変換
RによるBox-Cox変換RによるBox-Cox変換
RによるBox-Cox変換
 
「0がn個続いたあと1がn個続く」を正規表現にできるか?
「0がn個続いたあと1がn個続く」を正規表現にできるか?「0がn個続いたあと1がn個続く」を正規表現にできるか?
「0がn個続いたあと1がn個続く」を正規表現にできるか?
 
Estado del ejer. 2009
Estado del ejer. 2009Estado del ejer. 2009
Estado del ejer. 2009
 

More from Tomoyuki Tarumi

確率プロット
確率プロット確率プロット
確率プロット
Tomoyuki Tarumi
 
科学のための共通言語
科学のための共通言語科学のための共通言語
科学のための共通言語Tomoyuki Tarumi
 

More from Tomoyuki Tarumi (8)

確率プロット
確率プロット確率プロット
確率プロット
 
科学のための共通言語
科学のための共通言語科学のための共通言語
科学のための共通言語
 
計算機理論入門10
計算機理論入門10計算機理論入門10
計算機理論入門10
 
計算機理論入門09
計算機理論入門09計算機理論入門09
計算機理論入門09
 
計算機理論入門08
計算機理論入門08計算機理論入門08
計算機理論入門08
 
計算機理論入門06
計算機理論入門06計算機理論入門06
計算機理論入門06
 
計算機理論入門02
計算機理論入門02計算機理論入門02
計算機理論入門02
 
計算機理論入門01
計算機理論入門01計算機理論入門01
計算機理論入門01
 

計算機理論入門04

  • 1. 計算機理論入門4 2012年度後期 垂水共之 tarumi@ems.okayama-u.ac.jp 浮動小数点表現(つづき) 文字の表現 20121022 講義後追加
  • 2. 浮動小数点の表現 • IEEE754 交換形式 – 符号ビット – 指数部 • 下駄上げ表現 – 仮数部 • 絶対値表現
  • 3. 32bits単精度 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 符 指数部(8ビット) 仮数部(23ビット、ケチ表現) 号 • 指数部 8ビット – 下駄 01111111 – 1~254 – 0のとき、仮数部0であればゼロ – 255のとき、無限大(仮数部0)、またはNaN(仮数部 非0 ) • 仮数部 23ビット – 絶対値表現 – 1.xxxxに正規化し、頭の1は記録しない(ケチ表現) 64bits倍精度 128bits4倍精度 指数部 11ビット 指数部 15ビット 仮数部 52ビット 仮数部 112ビット
  • 4. 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 符 指数部(8ビット) 仮数部(23ビット、ケチ表現) 号 3 F 8 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3F800000 10進数に直すと? 10進数の-118.625はどんなビット配列になるかな?
  • 5. 1.25(10) =1.01(2) =1.01(2)×20 2.5(10) =10.1(2) =1.01(2)×21 0.625(10) =0.101(2) =1.01(2)×2-1 仮数部 1.01 仮数部の表現 ケチ表現 整数部の1は省く .010000000・・・0 指数部 0, 1, -1 指数部の表現 下駄上げ表現 下駄=01111111 (2) 0 01111111+0 =01111111 1 01111111+1 =10000000 -1 01111111-1 =01111110 符 指数部(8ビット) 仮数部(23ビット、ケチ表現) 号 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 F A 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 2 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 F 2 0 0 0 0 0
  • 6. 零と非数値 符 指数部(8ビット) 仮数部(23ビット、ケチ表現) 号 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 -0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 F 8 0 0 0 0 0 +∞ 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F F 8 0 0 0 0 0 -∞ 0 1 1 1 1 1 1 1 1 少なくとも 1 ビットは1 7 F 8 NaN
  • 7. 0.1(10) • 0.1(10)=0.000110011001100110・・・(2) =1.10011001100110011・・・(2)×2-4 • 指数部 4(10)=100(2) – 01111111 -) 100 ---------------- 01111011 符 指数部(8ビット) 仮数部(23ビット、ケチ表現) 号 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 3 D C C C C C C 0.1
  • 8. 2012.625 16 ) 2012 0.625 125 ... 12 x 2 1.250 16 )125 x 2 7 ... 13 0.500 x 2 2012(10)=7DC(16) 0.625(10)=0.101(2) 1.000 = 111 1101 1100(2) 2012.625(10)= 111 1101 1100.101(2) 指数部 =1.11 1101 1100 101(2)×210 10(10)=1010(2) 0111 1111 下駄 +) 1010 1000 1001 符 号 指数部(8ビット) 仮数部(23ビット、ケチ表現) 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 0 1 4 4 F B 9 4 0 0
  • 9. 文字の表現 • バイト:文字の記憶単位 • 1B=7bits (米国、英国) – 00から7Fまで128種類のビットパターン – アルファベット 大文字(26文字)、小文字(26文字) – 数字 0123456789 (10文字) – 記号等( 空白 + - * / = @ : ; ! " # $ % & ' ~ | ^ ? < > _ , . ) (27文字 or more) – 制御文字(非印刷文字、改行、タブ、・・・) (32文字) • 1B=8bits (その他のラテン系、日本) – 00からFFまで256種類のビットパターン • 00から7Fまでは基本的に上と同じ – 80からFFまでに固有の文字 – 日本ではカタカナ(ア・・・ンなど) (49文字or more)
  • 10. ANK文字 • Alphabet – 大文字、小文字 • Numeric – 数字 • Kana – カタカナ文字 • 英数字 – Alphabet+numeric 注意:英数字等のANK文字には 全角と半角とがある。 • 全角文字、半角文字 – 全角文字:漢字・ひらがな等の日本語文字 – 半角文字:英数字等の半分の幅で表される文字 – 昔、固定幅の文字サイズが、漢字・ひらがな等の日本語文字、 英数字の倍の幅を使っていた。
  • 11. 英字 A,B,C,・・・,Z 英数と数字 をまとめて 数字 0,1,2,・・・,9 「英数字」 という 特殊文字 .(ピリオド,点) ,(コンマ) _(ブ ランク) +(プラス) -(マイナス) *(ア スタリスク,星) /(スラッシュ) =(等号) ((開 きカッコ) )(閉じカッコ) :(コロン) ; (セミコロン) ´(くさび,引用符,シングルクオーテ ーション)
  • 12. 文字コード体系 • JIS – Japan Industrial Standard – 日本工業規格 • EBCDIC – Extended Binary Coded Decimal Interchage Code – EBCDIK EBCDIC with Kana • ISO – International Organization for Standardization – 国際標準化機構 • ASCII – American Standard Code or Information Interchange
  • 13. ANK文字コードの例 (例) JIS(16進) EBC DIC(16進) A 41 C1 B 42 C2 ブランク 20 40 0 30 F0 1 31 F1 ・ ・ 9 39 F9
  • 14. JIS8ビットコード表 上位4ビット 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 DE SP 0 @ P ` p - タ ミ 1 SH D1 ! 1 A Q a q 。 ア チ ム 2 SX D2 " 2 B R b r 「 イ ツ メ 3 EX D3 # 3 C S c s 」 ウ テ モ 4 ET D4 $ 4 D T d t 、 エ ト ヤ 5 EQ NK % 5 E U e u ・ オ ナ ユ 6 AK SN & 6 F V f v ヲ カ ニ ヨ 下位 4 7 BL EB ' 7 G W g w ァ キ ヌ ラ ビッ 8 BS CN ( 8 H X h x ィ ク ネ リ ト 9 HT EM ) 9 I Y i y ゥ ケ ノ ル A LF SB * : J Z j z ェ コ ハ レ B HM EC + ; K [ k { ォ サ ヒ ロ C CL , < L l | ャ シ フ ワ D CR - = M ] m } ュ ス ヘ ン E SO . > N ^ n ~ ョ セ ホ ゛ F SI / ? O _ o ッ ソ マ ゜
  • 15. 「数値」と「数字」 • 計算機では文字としての「数字」と「数値」とは異なる • “12”という文字は次のように記録される(JISコー ド) – [1] 0011 0001 0011 0010 – 3 1 3 2 • 数値としての12 は固定小数点方式では – [2] 0000 0000 0000 1100 – 0 0 0 C • [1]を固定小数点方式で解釈すれば12594となる (ちなみにEBCDICコードのF1F2を同様に解釈すれば-3086 となる)。 • 計算機は(バカであるがゆえに)記録されているbit 列が文字列か,数値なのかを判別することはできない。 • これを判別するのは人間(プログラマ-)の役割であり ,この違いを認識してプログラムを作らなければならな
  • 16. • (注)さらに 先に述べた機械語で表現された命令と上 の数値,文字列を区別するのも人間の役割であり,計算 機は区別することはできない。
  • 17. 漢字の表現形式 • 1B=8bitsでは256種類、漢字には少なすぎる! • 2B=16bitsでは65,536種類 • 漢字(多言語文字)の表現形式 – JIS – Shift-JIS – EUC-JP – Unicode • UTF-8 • UTF-16 • UTF-32
  • 18. JIS 漢字の表現形式 • 教育用漢字 1,006字 • 当用漢字 1,850字(常用漢字に変更される) • 人名用漢字 285字 • 常用漢字 2136字/4388音訓 • JIS漢字コード – JIS第1水準 2,965字 音読み順 – JIS第2水準 3,390字 部首画数順 – JIS第3水準 1,259字 – JIS第4水準 2,436字 – 非漢字 1,183字
  • 19. JIS つづき • ANKとの調和 – 漢字イン Esc$B – 漢字アウト • Esc(J ANKへ • Esc(B ASCII • ESC(J JIS X 0201-1976 Roman • ESC$@ JIS X 0208-1978 (旧JIS) • ESC$B JIS X 0208-1983 (新JIS) • 例 平成24年10月30日 [KI]平成[KO]24[KI]年[KO]10[KI]月[KO]30[KI]日 [KO] • バイト数 3 22 3 2 3 2 3 2 3 2 3 2 3 2 3
  • 20. Shif JIS コード • ANKの未使用領域 80-9F, E0-FF に JISコードの1B目を移し(シフト)、 JISコードの2B目はそのまま • 漢字イン、漢字アウト無しで、ANK文字と共存可能 • 注意: – 漢字コードの2B目にはANK文字と同じコードも出てくる。 – 文字列の先頭から見て行けば、ANK文字か漢字かは判別可能。 – 文字列の途中からは判別不可能!
  • 21. EUC-JP Extended Unix Code • ASCII 00-7F (1B) • 漢字 A1A1-FEDF (2B) JIS漢字コードの各バイトに80 を加 • 半角カナ 8EA1-8EDF (2B) • 補助漢字 8FA1A1-8FFEFE (3B) • 1文字が 1B~ 3B code set 0: ASCII 1Bコード 7bits JIS code set 1: JIS90漢字コードに相当 2Bコード JIS90の各バイトに128(x80)を加えたもの code set 2: カタカナ 2Bコード、1B目はx8Eに固定、2B目のxA1~xFEを使用 code set 3: 補助漢字 3Bコード、1B目はx8Fに固定、2B,3B目はxA1~xFEを使用
  • 22. Unicode • 漢字に限らず、世界中の文字を統一的に扱う企画 • 16bitsで体系化を始める – 基本多言語面(BMP) • 21bits 体系化へ • CJK Han Unicication 統合漢字 (Chinese, Japanese, Korean) – 中国語、日本語、朝鮮語の漢字
  • 23. 符号化方式 • UTF-8 – インターネットで一番よく利用されている – 1B~4Bの可変長 • ASCII上位互換 • UTF-16 – BMP文字は16bitsで – その他の文字は16bitsペア(32bits) – Windows内部表現で利用されている • UTF-32 – すべての文字を32bitsの固定長で表現 • 実際使われているのは21bits
  • 24. 例 • 「愛」 – JIS 1b 24 42 30 26 1b 28 42 – Shift JIS 88 a4 – EUC-JP b0 a6 – UTF-8 e6 84 9b • 「あ」 – JIS 1b 24 42 24 22 1b 28 42 – Shift JIS 82 a0 – EUC-JP a4 a2 – UTF-8 e3 81 82 • 「A」(ANK文字) – JIS ? – Shift JIS ? – EUC-JP ? – UTF-8 ?