7章 情報の表現と基礎理論. 数の表現(書き方) 「数」と「数の書き方」をわけて考える 「数の書き方」と,「数そのものの性質」は別のもの 例:13 は素数・・・”13”という書き方とは無関係 ここでは書き方(表現方法)について考える 567.

Slides:



Advertisements
Similar presentations
2009/11/10 10 進数と r 進数を相互に変換できる コンピュータのための数を表現できる 2進数の補数を扱える コンピュータにおける負の数の表現を説明で きる コンピュータでの演算方法を説明できる 文字や記号の表現方法を示せる 第7回 今日の目標 § 2.2 数の表現と文字コード.
Advertisements

プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
平成 27 年 10 月 21 日. 【応用課題 2-1 】 次のビット列は、ある 10 進数を 8 ビット固定小数点表示で表した時の ものです。ただし、小数点の位置は 3 ビット目と 4 ビット目の間としてお り、負数は2の補数で表しています。このとき、元の 10 進数を求めてく ださい。
変数とその種類 変数とは何か? → データ ( 数値 ) を入れておく 箱 1000 変数名とは何か? → 箱に付ける名前 xy 変数名 変数の種類 ( 変数の型 ) → 入れるデータによって箱の種類が異なる int char float double その他たくさん integer (
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
第1節 コンピュータにおける 情報のあらわし方
10進数 Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 例: 3271 = (3×103) + (2×102) + (7×101) + (1×100) 8進数 Digits: 0, 1, 2, 3, 4, 5, 6, 7 例: 3271 = (3×83) + (2×82)
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
『基礎理論』 (C)Copyright, Toshiomi KOBAYASHI,
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ QRコードを作ろう! ~.
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
「情報」 (中村) オリジナル PPT (2010/05/07) 1 1.
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
プログラミング基礎I(再) 山元進.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
x y 復習 変数とその種類 変数名 数学の場合 未知数 「変数xに‥を代入し‥」 x = 5 x = 1.3
数学の予備知識 ネットワークシステムⅠ 第2回.
ネットワークシステムⅠ ネットワークシステム 第2回
プログラミング言語論 プログラミング言語論 プログラミング言語論 演習1 解答と解説 演習1解答と解説 1 1.
2012年度 情報数理 ~ QRコードを作ろう!(1) ~.
2008年度 情報数理 ~ QRコードを作ろう!(1) ~.
プログラムはなぜ動くのか.
2進数・16進数.
補数 n:桁数、b:基数 bの補数 bn-x 253(10進数)の10の補数は、 =747
2010年度 情報数理 ~ QRコードを作ろう!(1) ~.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
情報処理Ⅱ 第2回 2007年10月15日(月).
第二回 VB講座 電卓を作ろう.
プログラミング応用 printfと変数.
文字コード 情報処理3 今井孝明.
文字の表現.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
第4回 コンピューティングの要素と構成 平成22年5月10日(月)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3章 演算装置.
文字エンコーディング 2010年7月.
計算機構成 第2回 ALUと組み合わせ回路の記述
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
Ibaraki Univ. Dept of Electrical & Electronic Eng.
9. 演算回路 五島 正裕.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
データの表現 2進数 0と1を使う。 基数(基準になる数)が2. 101(2) かっこで2進数と示すことがある。
x y 復習 変数とその種類 変数とは何か? →データ(数値)を入れておく箱 変数名 変数名とは何か?
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
情報処理Ⅱ 第2回 2005年10月14日(金).
情報処理Ⅱ 第2回 2006年10月13日(金).
9. 演算回路 五島 正裕.
情報処理Ⅱ 2006年11月24日(金).
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
情報処理Ⅱ 第2回 2004年10月12日(火).
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
香川大学創造工学部 富永浩之 情報数学1 第3-3章 多進法での四則演算 香川大学創造工学部 富永浩之
Presentation transcript:

7章 情報の表現と基礎理論

数の表現(書き方) 「数」と「数の書き方」をわけて考える 「数の書き方」と,「数そのものの性質」は別のもの 例:13 は素数・・・”13”という書き方とは無関係 ここでは書き方(表現方法)について考える 567

基数法とは? 位取り基数法(基数法) 67 = 6× ×10 0 のような数の表現方法 10 の部分は10でなくても良い.これを基数という. 基数を2にしたものを二進数と言う. 二進数の1けたをビット,8けたをバイトと呼ぶ. 基数法の利点 大きな数でも短く表現出来る(文字数が少ない) ある数字の表現は,ただ1通りしかない 日本のそろばん:数の表現が一通り

基数法の性質 表現出来る数の範囲(基数を r とする) n けたの r 進数で表せる数は 0 から r n -1 である けたずらし(シフト) r 進数の各けたを左に1けたずらすと r 倍になる 例:10進数で 123  1230 にすると10倍 同様に,2進数で 101  1010 にすると2倍 r 進数の各けたを右に1けたずらすと 1/r 倍になる 例:10進数で 1230  123 にすると1/10倍 同様に,2進数で 1010  101 にすると½倍 この性質を使うと,一番下のけたの値を 調べることが出来る 例:3456 / 10 = 345,余り 6 となる 同様に,1101 を ½ 倍すると,110 余り 1

基数変換の方法 2進数を10進数に変換 例:1101 = 1×2 3 +1×2 2 +0×2 1 +1×2 0 = 13 10進数を2進数に変換 2で割った余りを調べ,下の桁から順に並べる 13 / 2 = 6 余り 1 6 / 2 = 3 余り 0 3 / 2 = 1 余り 1 1 / 2 = 0 余り 1 となるので,13 は二進数では 1101 になる これは,前のスライドの「2進数を右に1けたシフト すると ½ になる」という性質を使っている 1101(13) を 2 で割ると 110(6), 余り 1 になる

16進数と8進数 10進数と2進数の間の変換は,面倒くさい でも,2進数での表記は,長すぎる  2進数を短く表現出来ないか? 2進数を4桁ずつ区切って表示する 例:  1011 と 0111 に分け, それぞれに記号を割り当てて表示しよう! 4桁の2進数は 0~15 の 16 通りなので, 数字(0〜9) では足りない  A~F を 1010 (10) 10 〜 1111 (15) 10 に割り当て. は B7 と表現出来る これは,16進数である. 2進数を4桁ずつ区切っているので,2 4 = 16 B7 = B(11)× ×16 0 = 183

例題 10進数の 83 について 8bit の 2進数で表せ. 2桁の16進数で表わせ. 2進数の について 10進数で表せ. 16進数で表わせ. 16進数の 7D について 8bit の2進数で表せ. 10進数で表せ.

負の数の表現 8bit(1byte)の2進数は,0~255 を表現出来る 0と正の値しか表現出来ない マイナス(-) の記号を表現出来ないか? アイディア1:絶対値表現(符号による方法) 問題点 0の表現が二通りできてしまう ・・・ ・・・ 符号ビット 0 なら + 1 なら - 数の絶対値

負の数の表現 アイディア2:1の補数表現 問題点 0の表現が二通りできてしまう ・・・ ・・・ 符号ビット 0 なら + 1 なら と1を反転

負の数の表現 アイディア3:2の補数表現 利点 0の表現が一通りしかない 負の数をそのまま加算すると正しい答えが得られる 符号ビット 0 なら + 1 なら と1を反転 を足す もしも繰り上がりのた めに桁数が増えたら, その桁は単に捨てる! 重要!!

例題(1) -21 を,8bit の2の補数で表現せよ. 21 は,2進数で 反転して を加えて となる を,2の補数を用いて計算せよ. 34 は,2進数で これに,上で求めた -21 の2の補数を加える 一番上の桁をとって これは,10進数では 13 になる.

例題(2) -113 を,8bit の2の補数で表現せよ. を,2の補数を用いて計算せよ.

0の2の補数を計算してみる 0の2の補数を求める これを反転して これに1を加えて 最上位桁をすてると よって,0の表現は1通りしか存在しない n桁の2の補数による値の表現範囲 -2 (n-1) から 2 (n-1) -1 まで 例:8bit の場合,-128 から 127 まで(256通り)

なぜ引き算ができるのか?(1) を計算することを考える 繰り下がり計算が面倒!999から引くなら楽なのに! なんとかして 999 を使ってみる 845 – 268 = (999 – 268) – 999 = (999 – 268) – = (999 – ) – 1000 とすると計算できる. 999 から 268 を計算するのは,各桁の反転に相当 0  9, 1  8, 2  7, 3  6, 4  5 で置換 なので,上の括弧内の計算( )は 各桁を反転して1を足すことに相当する

なぜ引き算ができるのか?(2) 2進数の反転計算 から引くことと同じ. 2の補数 反転してから1を加えるので, から引く ことに相当する 桁あふれは無視するので, を足したり 引いたりするのは,何もしないのと同じ. つまり,2の補数とは 先に引き算をした値のようなもの.

小数の表現(1) 桁ずらし(シフト演算)について 10進数の 123 を右に1桁ずらすと 12.3 となる. この値は 123 の 1/10 である. 同様に,2進数の 1101 を右に一桁ずらすと となる.これは 1101 (13) 10 の ½ である. つまり,6.5 である. これを,固定小数点表現と呼ぶ. 基数による解釈 は 1×2 2 +1×2 1 +0×2 0 +1×2 -1 = 6.5 小数点以下の各桁の重みは,0.5, 0.25, 0.125,.. 割り切れない数について 例えば,0.2 は2進数では循環小数になる …

例題 2進数の固定小数, について 10進数で表わせ. 10進数の小数,7.825 について 2進数で表せ.

浮動小数点数 非常に大きい数の表現 例:光の速度 3×10 8 = [m/s] このように,桁をずらす桁数(指数)を使うことで 非常に大きい数や小さな数を表現することが出来る C言語では,float や double で使われている float :単精度浮動小数点数 double : 倍精度浮動小数点数 2進数では 1桁ずらすと,2倍したことになるので, a × 2 b のような表現になる a を仮数部,bを指数部と呼ぶ.

浮動小数点数の規格 IEEE754 として規格化されている float :全体で32bit 符号ビット:1bit, 指数部:8bit, 仮数部:23bit の計32bit double : 全体で64bit 符号ビット:1bit, 指数部:11bit, 仮数部:52bit の計64bit 値は,以下の式で計算できる float : (-1) s × 2 e-127 × (1+m) double : (-1) s × 2 e-1023 × (1+m) s が 1 なら負の数である. 高度な話題:げたばき表現,ケチ表現など. s指数部(e)仮数部(m)

10進数の表現 コンピュータは,2進数と10進数を変換している 人に計算結果を見せるため(2  10) プログラムをコンパイルするとき(10  2) 10進数も,なんらかの方法で表現する必要がある 10進数の一桁は,2進数の4bit で表すことが出来る. パック10進数という.23 なら “ ” 2進数でも,16進数でもないことに注意!! 10進数の一桁を,8bitで表すこともある. ゾーン10進数という.

文字コード 文字を2進数で表すには? a~z なら26 通り 大文字/小文字に,10個の数字を加えて62 通り 記号 ! “ # $ % & ‘ ( ) + - * / = ^ ~ ; : { } ? ・・を考えると,キリがいい所で 8bit にしよう. 256 種類の文字が使える. 文字1つ1つに,数値を割り当てる. 文字‘0’ には 48, 文字‘A’ は 65, というふうに. 0番から31番は特殊な用途に使われている. 改行記号,1文字消去,などなど. C言語の char 型変数は,8bit の変数.

ASCII コード/ JISコード ASCIIコード 7bit にアルファベット・ 数字・記号を入れたもの 現在は,ほとんどのコン ピュータで使われている JISコード(JIS X0201) 残った半分にカタカナを入 れたもの(半角カナ) 濁点も1文字 ひらがな,漢字は表現でき ない 上位4bit 下位4bit ASCIIコード

例題 次の4文字 “STAR” を,ASCII コードで表わせ. 16進数では □□ □□ □□ □□ 次の16進数は,どのような文字か. 54 6F 77 6E

漢字コード 漢字は数千種類も存在する 8bit では表現出来ない・・16bit(2バイト)使う 数種類の漢字コードが使われている JISコード・・通信での標準的な規格 Shift-JISコード (Windows での標準) EUCコード (UNIX でよく使われてきた) コードが違うと,文字化けの原因に. 他の言語(韓国,タイ,・・)の文字は? Unicode が策定され,普及し始めている 多言語の文字を扱うことが出来る