16進数の場合も同じである.たとえば, を 倍や 倍, 倍や 倍すると
2進数の場合も全く同じである.この場合, の計算が簡単である. が正の整数 の場合,左に ビットシフトさせる.一方, が負の整数の場合, の絶対値分,右 にシフトさせる.
問題は,符号付き整数で,第15ビットが1の負の場合である.これは,実例を示した方が 分かりやすい.たとえば, を2倍と4倍する事を考える.2倍すると で,4倍すると である.それぞれを,2の補数で取り扱うと, となる.
次に,1/2倍と1/4倍する事を考える.すると
[ |
---|
l]ポイント
|
と を1ビット右にシフトさせて,1/2倍してみる.
1ビット右 | ||
1ビット右 |
[ |
---|
l]ポイント
|
命令語 SLA 語源 Shift Left Arithmetic (shift:移す left:左 arithmetic:算術) 役割 レジスタの内容をnビット左に移動させる.空いたビットには,0 が入る. これは,符号付き整数を 倍しているのと同じ. 書式 教科書(p.59)の通り.第一オペランドは汎用レジスター.第二オ ペランドはアドレス. 機能 教科書(p.59)の通り フラグレジスタ 教科書(p.59)の通り.
この命令は,符号付き整数を 倍する.従って,シフトにより空いたビットには,0 が入る.
SLA GR0,2 ;GR0の内容を2ビット左へシフト SLA GR0,0,GR1 ;GR0の内容をGR1の値,左へシフト
命令語 SRA 語源 Shift Right Arithmetic (shift:移す right:右 arithmetic:算術) 役割 レジスタの内容をnビット右に移動させる. 空いたビットには, 符号ビットが入る.これは,符号付き整数を 倍しているのと同じ. 書式 教科書(p.62)の通り.第一オペランドは汎用レジスター.第二オ ペランドはアドレス. 機能 教科書(p.62)の通り フラグレジスタ 教科書(p.62)の通り.
この命令は,符号付き整数を 倍する.従って,シフトにより空いたビットには, 符号ビットが入る.
SRA GR0,2 ;GR0の内容を2ビット右へシフト SRA GR0,0,GR1 ;GR0の内容をGR1の値,右へシフト
命令語 SLL 語源 Shift Left Logical (shift:移す left:左 logical:論理上の) 役割 レジスタの内容をnビット左に移動させる.空いたビットには, 0が入る.これは,符号無し整数を 倍しているのと同じ. 書式 教科書(p.65)の通り.第一オペランドは汎用レジスター.第二オ ペランドはアドレス. 機能 教科書(p.65)の通り フラグレジスタ 教科書(p.65)の通り.
この命令は,符号無し整数を 倍する.従って,シフトにより空いたビットには,0 が入る.
SLL GR0,2 ;GR0の内容を2ビット左へシフト SLL GR0,0,GR1 ;GR0の内容をGR1の値,左へシフト
命令語 SRL 語源 Shift Right Logical (shift:移す right:右 logical:論理上の) 役割 レジスタの内容をnビット右に移動させる.空いたビットには, 0が入る.これは,符号付き整数を 倍しているのと同じ. 書式 教科書(p.67)の通り.第一オペランドは汎用レジスター.第二オ ペランドはアドレス. 機能 教科書(p.67)の通り フラグレジスタ 教科書(p.67-68)の通り.
この命令は,符号無し整数を 倍する.従って,シフトにより空いたビットには, 符号ビットが入る.
SRL GR0,2 ;GR0の内容を2ビット右へシフト SRL GR0,0,GR1 ;GR0の内容をGR1の値,右へシフト