Transcript Document

平成26年10月17日
【応用課題2-1】
次のビット列は、ある10進数を8ビット固定小数点表示で表した時の
ものです。ただし、小数点の位置は3ビット目と4ビット目の間としてお
り、負数は2の補数で表しています。このとき、元の10進数を求めてく
ださい。
10100110
補数 01011010
0101.1010 ⇒(10進数) 5.625
-5.625
【応用課題2-2】
【基礎課題2-6】と同じ16ビット浮動小数点表示を考えます。この表示
で表した次のビット列は、10進数で表すと何になりますか。
0 0000100 10000010
指数 4
0.10000010×24 = 1000.001
⇒(10進数) 8.125
【応用課題2-3】
【基礎課題2-7】と同じ16ビット浮動小数点表示を考えます。こ
の表示で表した次のビット列は、10進数で表すと何になりますか。
1 10000010 0000010
指数 130-127=3
-1.0000010×23 = -1000.001
⇒(10進数) -8.125
【応用課題2-4】
2の補数で表された負数10101110の絶対値はどれか。(平成20年度秋)
ア 01010000
イ
01010001
ウ
01010010
エ
01010011
【応用課題2-5】
数を2の補数で表すとき、すべてのビットが1であるnビットの2進
数”1111・・・11”が表す数値又はその数式はどれか。(平成20年度春)
ア –(2n-1-1)
イ -1
ウ 0
エ 2n-1
【応用課題2-6】
負数を2の補数で表す8ビットの数値がある。この値を10進数で表現す
ると-100である。この値を符号なしの数値として解釈すると、10進数で幾
らか。(平成17年度春)
ア
28
イ
100
ウ
156
エ
228
100=64+32+4 ⇒(2進数)01100100
補数:10011100 ⇒(10進数)128+16+8+4= 156
【応用課題2-7】
次の24ビットの浮動小数点形式で表現できる最大値を表すビット列を、16進
数として表したものはどれか。ここで、この形式で表現される値は(-1)S×16E64×0.Mである。(平成18年度秋)
0 1
7 8
指数部(E):実際の指数に64を
加算したもの0≦E≦127
仮数部の符号(S):0は非負、1は負
ア
3FFFFF
イ
7FFFFF
23
仮数部(M):絶対値表現
0111 1111 1111 1111 1111
ウ
BFFFFF
エ
FFFFFF
<学習内容>
1. 論理シフト演算
2. 算術シフト演算
3. 一般の乗算
4. 誤差
<目的>
シフト演算を理解し、2進数の乗算と除算を行えるようになる
こと。また、コンピュータ内部での演算の際にどのような誤
差が発生するかを理解すること。
2進数の乗算(かけ算)

2進数を2倍することは
・・・> けたを左に1つずらすこと
例) 0011 × 2 = 0110

2進数を4(22)倍することは ・・・>
例)

0011 × 22 = 1100
2進数を2n倍することは
けたを左に2つずらすこと
けたを左にn個ずらすこと
2進数の除算(割り算)

2進数を0.5(1/2=2-1)倍することは ・・・> けたを右に1つずらすこと
例) 0110 ÷ 2 =
0011
 2進数を2-n倍することは
けたを右にn個ずらすこと
与えられた数値のけた数を左右にずらす演算
2進数の場合:正の2進整数に2nをかけるあるいは2nで割る演算に対応。
論理左シフト
00
0
0
0
0
1
0
1
0
0
20(10進数)
×4
0
1
0
1
0
0
0
0
80
あふれたビットは捨てる
空いたビットには0を入れる
論理右シフト
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
1
空いたビットには0を入れる
20(10進数)
÷4
0
00
5
あふれたビットは捨てる
0
0
0
1
1
6
0
÷4
0
0
0
0
0
1
1
0
1
切り捨てになっている
固定小数点表示を用いると・・・
0
0
1
1
0
.
0
6.0
÷4
0
0
0
0
1
.
1
1.5
計算可能
 符号付きの2進数の場合、論理シフトするだけでは、乗算、除算になら
ない
5
 例)0101 × 2
⇒(左論理シフト) =1010 ⇒(10進数)-6 ?

最上位ビットが符号ビットであることに注意

nビットで表せるのは、-2n-1 ~ 2n-1-1
ビット数を増やせば・・・
 例) 00101 × 2
⇒(左論理シフト) =01010 ⇒(10進数)10 OK
けたあふれしなければ、正数についてはOK
-6
例1) 1010÷2を考える
0110 (正数)
 2で割る(右論理シフト)⇒ 0011
 補数をとる ⇒ 1101 ⇒ -3 OK

補数をとる ⇒
1010
1101
①符号は固定
②右にシフトして1を埋める?
-24
例2) 101000 ÷ 4

補数をとる ⇒ 011000 (正数)

4で割る(右に2つ論理シフト)⇒ 000110

補数をとる ⇒ 111010 ⇒ -6 OK
101000
111010
符号は固定
右にシフトして1を埋める?
符号ビット
 算術左シフト はそのまま
1
1
1
0
1
0
0
-24
0
×4
1
1
1
0
1
0
0
0
0
-96
0
空いたビットには0を入れる
あふれたビットは捨てる
 算術右シフト
符号ビット
はそのまま
1
1
1
0
1
0
0
0
1
1
1
1
1
0
1
0
空いたビットには符号ビッ
トと同じビットを入れる
-24
0
00
÷4
- 6
あふれたビットは捨てる
2進数×Nを求める場合・・・
Nを2nの和で表現するとシフト演算を用いて計算できる
例1)000101×3 の場合
000101×3 = 000101×(2+1) = 000101×2 + 000101×1
= 001010 + 000101 = 001111
⇒15(10進数)
例2)000101×6 の場合
000101×6 = 000101×(22+2) = 000101×22 + 000101×2
= 010100 + 001010 = 011110
⇒30(10進数)
誤差とは
コンピュータ内部では、指定されたけた数で数値を表現している。そ
のため、真の値との差が生ずる。その差を誤差という。
誤差は、その発生原因に応じて次のように分類されている。
 けたあふれ誤差
 丸め誤差
 けた落ち
 情報落ち
 打ち切り誤差
けたあふれ誤差
 演算結果がコンピュータ内部で表現できる範囲を超えることで発生する誤差。次
の2種類がある
<オーバーフロー>
演算結果が数値で表現できる最大値を超えてしまうこと
例) 4ビットの2進整数(正):0110 ×4 ⇒ 11000 4けたを超える
<アンダーフロー>
演算結果が数値で表現できる最小値を超えてしまうこと
例)4ビット固定小数点表示(正):10.10÷16 ⇒00.001010
最小けたより小さくなる
丸め誤差
 指定されたけた数で演算結果を表すため、最下位のけたより小さい部分を
四捨五入、切り捨てあるいは切り上げを行う。そのとき発生する誤差。
例)4ビット固定小数点(正):10.01÷2
⇒01.001
最下位より下は切り捨て
けた落ち
 絶対値のほぼ等しい二つの数値の絶対値の差を求めた際に、有効けた数が
減少することで生ずる誤差。
例)有効数字4けたの10進数:0.1234-0.1233
= 0.0001
有効けた数が4けたから1けたへ減少する
情報落ち
 絶対値の非常に大きな数値と非常に小さい数値の加算あるいは減算を行っ
た際に、小さい方の数値が演算結果に反映されないために生ずる誤差。
例)有効けた数3けたの浮動小数点(10進数)
0.123×103+0.456×10-1 =
0.123
×103
+ ) 0.0000456 ×103 正規化
0.1230456 ×103
⇒ 0.123×103
0.456×10-1が反映されない
打ち切り誤差
 特定のけたでデータが打ち切られてしまうことで生じる誤差。
例)1÷3を10進数で求めると
1 ÷ 3 = 0.333333333・・・
例えば7けたで打ち切ると
1 ÷ 3 = 0.33333333
このとき、真の値との差が生ずる。
無限に続く・・・
 【応用課題3-1】~【応用課題3-4】
明日(10月18日)17:00
 10月24日
論理演算
 10月31日 論理回路
 11月 7日 理解度テスト