ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)

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 進数を求めてく ださい。
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
第2章 数値の入力と変数 scanfと変数をやります.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
第6章 2重ループ&配列 2重ループと配列をやります.
情報工学科 二宮 洋・鈴木 誠 小林 学・高畠俊徳 火曜日 1コマ目
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第2回 Microsoft Visual Studio C++ を使ってみよう
Borland Delphi 6 でビジュアルプログラミング
Microsoft Visual Studio 2005 の使い方
Cプログラミング演習 第6回 ファイル処理と配列.
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
プログラミング応用 printfと変数.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
. . . . 10倍,100倍 3.24を10倍した数を考えましょう。 を100倍した数を考えましょう。 10倍
コンピュータに計算させる命令を確かめよう!
高度プログラミング演習 (02).
湘南工科大学 2013年10月8日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Cの実行モデル.
計算機構成 第2回 ALUと組み合わせ回路の記述
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
Ibaraki Univ. Dept of Electrical & Electronic Eng.
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
ex-8. 平均と標準偏差 (Excel 実習シリーズ)
ディジタル回路 9. 演算回路 五島 正裕.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
高度プログラミング演習 (01).
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
コンピュータアーキテクチャ 第 3 回.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
pf-7. データ構造とアルゴリズム (Python プログラミング基礎を演習で学ぶシリーズ)
コンピュータアーキテクチャ 第 4 回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
pf-5. 関数呼び出し,スコープ (Python プログラミング基礎を演習で学ぶシリーズ)
pf-4. 式の抽象化と関数 (Python プログラミング基礎を演習で学ぶシリーズ)
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
9. 演算回路 五島 正裕.
pf-6. スタック (Python プログラミング基礎を演習で学ぶシリーズ)
コンピュータアーキテクチャ 第 3 回.
ex-8. 平均と標準偏差 (Excel を演習で学ぶシリーズ)
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
標準入出力、変数、演算子、エスケープシーケンス
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
pf-2. 条件分岐 (Python プログラミング基礎を演習で学ぶシリーズ)
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
情報処理Ⅱ 第2回 2004年10月12日(火).
mi-5. プロダクションシステム 人工知能を演習で学ぶシリーズ(5)
JavaScript    プログラミング入門 2-3 式と演算子 2006/10/12 神津 健太.
printf・scanf・変数・四則演算
Presentation transcript:

ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ) https://www.kkaneko.jp/cc/ca/index.html 金子邦彦

アウトライン 9-1 浮動小数点数の扱い 9-2 2の補数 9-3 算術シフト 9-4 論理シフト

9-1 浮動小数点数の扱い

対応

使用されるレジスタが xmm0 に変わるなど, いくつかの変化 対応 int を double に変更

9-4 2の補数

2の補数 2の補数は,負の整数も扱いたいときに便利 2の補数では,最上位ビットが符号ビット 0 → 正の整数または0 1 → 負の整数 1     0 → 正の整数または0     1 → 負の整数 10進数の1 1 10進数の0 1 10進数の-1

符号付き整数 8ビットの整数データの場合 最上ビットは符号ビット 0 → 正の数,0 1 → 負の数 正なのか負なのかの区別に使う 8 7 6 5 4 3 2 1  最上ビットは符号ビット  0      → 正の数,0  1      → 負の数  正なのか負なのかの区別に使う

2の補数 8ビットの整数データの場合 1 1 1 1 10進数の2 10進数の1 10進数の0 10進数の-1 10進数の-2 8 7 6 5 4 3 2 1 10進数の2 1 10進数の1 1 10進数の0 1 10進数の-1 1 10進数の-2

パソコン演習 ① ウェブブラウザを起動する ② python tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ ※ Internet Explorer でうまく動かない場合があります  → うまく動かないときは Google Chrome を試してください  ※ 日本語モードはないので,英語で使う

③ 「Visualize your code and live help now」をクリック

言語を選べる. 「Python 3.6」を選んでおく エディタ 実行のためのボタン

print( format( -2 & 0xff, 'b' ) ) print( format( -1 & 0xff, 'b' ) ) ① 次のように書きなさい print( format( -2 & 0xff, 'b' ) ) print( format( -1 & 0xff, 'b' ) ) print( format( 0 & 0xff, 'b' ) ) print( format( 1 & 0xff, 'b' ) ) print( format( 2 & 0xff, 'b' ) ) print( format( 3 & 0xff, 'b' ) )

②「Visualize Execution」をクリック

③「Last」ボタンをクリック

④ 結果を確認 -2 -1 1 2 3 10進数

9-3 算術シフト

算術シフト 整数を2倍したい,4倍したい,1/2倍 したい,1/4倍したい 数 10(十進数) 1 (二進数) ここでは, 最上位ビットは 1 (二進数) ここでは, 最上位ビットは 符号ビット (+か-かの記録) 20(十進数) 1 (二進数) 整数の2倍 = 最上位ビット以外のビットを左に1つずらす(左シフト)

算術シフトの左と右 算術左シフト 最上位ビットは変化しない 最上位ビット以外を左にシフト.できた空きに は0を詰める 算術右シフト 最上位ビット以外を右にシフト.できた空きに は最上位ビットの値を詰める

算術左シフトによる2倍 10(十進数) 1 (二進数) 20(十進数) 1 (二進数) -5(十進数) 1 (二進数) ※ 2の補数 1 (二進数) 20(十進数) 1 (二進数) -5(十進数) 1 (二進数) ※ 2の補数 -10(十進数) 1 (二進数) ※ 2の補数 最上位ビット以外を左に1つずらす(左シフト). 最下位ビットに0を入れる

算術左シフトによる4倍 10(十進数) 1 (二進数) 00 40(十進数) 1 (二進数) -5(十進数) 1 (二進数) ※ 2の補数 1 (二進数) 00 40(十進数) 1 (二進数) -5(十進数) 1 (二進数) ※ 2の補数 00 -20(十進数) 1 (二進数) ※ 2の補数 最上位ビット以外を左に2つずらす(左シフト). 最下位2つに,「00」を入れる

算術右シフトによる 1/2倍 10(十進数) 1 (二進数) 5(十進数) 1 (二進数) -5(十進数) 1 (二進数) ※ 2の補数 1 (二進数) 5(十進数) 1 (二進数) -5(十進数) 1 (二進数) ※ 2の補数 -3(十進数) 1 (二進数) ※ 2の補数 最上位ビット以外を右に1つずらす(右シフト). 最上位から2番目のビットには,最上位ビットを入れる

算術シフト 整数を2倍,4倍,・・・,1/2倍, 1/4倍・・・,したいときに使う 2の補数では,符号ビットがある.符号 ビットの部分はそのまま残すのが,算術 シフト

算術右シフト sar の例 算術右シフトは 1/2倍, 1/4倍, ・・・ a に 32 をセット a を 2ビット算術右シフト アセンブリ言語のプログラム a に 32 をセット a を 2ビット算術右シフト 実行結果の例

算術左シフト sal の例 算術左シフトは 2倍, 4倍, ・・・ a に 32 をセット a を 2ビット算術左シフト アセンブリ言語のプログラム a に 32 をセット a を 2ビット算術左シフト 実行結果の例

パソコン演習 Visual Studio を起動しなさい Visual Studio で,Win32 コンソールアプリケー ション用プロジェクトを新規作成しなさい プロジェクトの「名前」は何でもよい

3. Visual Studioのエディタを使って,ソースファイル を編集しなさい 追加

4. ビルドしなさい.ビルドのあと「1 正常終了, 0 失敗」の表示を確認しなさい → 表示されなければ,プログラムのミスを自分で確 認し,修正して,ビルドをやり直す

5. Visual Studioで,ブレークポイントを設定しなさ い 7. ブレークポイントの行で,実行が中断することを確認し なさい あとで使うので,中断したままにしておくこと 「デバッグ」 → 「デバッグ開始」

7. 逆アセンブルで「a = a / 2」のところを確認 しなさい. idiv ではなく sar になっている(算術シフト) 1ビットのシフト

8. 次のように書き替えて,同じ手順を繰り返しなさい. 逆アセンブルで「a = a / 4」のところを確認しなさい. 2ビットのシフト

9. 次のように書き替えて,今度は, 変数 a の値を確認しなさい 3ビットのシフト (8で割って,あまりを切り捨て)

10. 次のように書き替えて, 変数 a の値を確認しなさい 3ビットのシフト (8倍)

Pentium 系列プロセッサの 算術演算命令の例 種類 命令 意味 算術演算 add 加算 sub 減算 imul 乗算 idiv 除算 sar, sal 算術シフト

9-4 論理シフト

論理シフトの例 1 2ビット目が1か0かを調べたい 1 1 1 論理右シフト 論理積 他のビットは無視したい 論理右シフト 1 1 論理積 1 ※ もし,元の2ビット目が0だったときは,  この値は「00000000」