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の値,右へシフト