シフト回路

シフト回路とは、論理シフトや算術シフトなどのビットシフトを実現する論理回路のことです。

論理シフトのシフト回路

右に論理シフトするシフト回路

8ビットのビット列a_[[7]]a_[[6]]a_[[5]]a_[[4]]a_[[3]]a_[[2]]a_[[1]]a_[[0]]を右に論理シフトするシフト回路は、マルチプレクサを利用して、以下のように実現できます。

このシフト回路では、___S___[0]]~___S___[2]]を操作することにより、以下の8種類の論理シフトを行えます。

___S___[0]] ___S___[1]] ___S___[2]]
0ビット右に論理シフト 0 0 0
1ビット右に論理シフト 1 0 0
2ビット右に論理シフト 0 1 0
3ビット右に論理シフト 1 1 0
4ビット右に論理シフト 0 0 1
5ビット右に論理シフト 1 0 1
6ビット右に論理シフト 0 1 1
7ビット右に論理シフト 1 1 1

左に論理シフトするシフト回路

8ビットのビット列a_[[7]]a_[[6]]a_[[5]]a_[[4]]a_[[3]]a_[[2]]a_[[1]]a_[[0]]を左に論理シフトするシフト回路は、マルチプレクサを利用して、以下のように実現できます。

このシフト回路では、___S___[0]]~___S___[2]]を操作することにより、以下の8種類の論理シフトを行えます。

___S___[0]] ___S___[1]] ___S___[2]]
0ビット左に論理シフト 0 0 0
1ビット左に論理シフト 1 0 0
2ビット左に論理シフト 0 1 0
3ビット左に論理シフト 1 1 0
4ビット左に論理シフト 0 0 1
5ビット左に論理シフト 1 0 1
6ビット左に論理シフト 0 1 1
7ビット左に論理シフト 1 1 1

算術シフトのシフト回路

右に算術シフトするシフト回路

8ビットのビット列a_[[7]]a_[[6]]a_[[5]]a_[[4]]a_[[3]]a_[[2]]a_[[1]]a_[[0]]を右に算術シフトするシフト回路は、マルチプレクサを利用して、以下のように実現できます。

このシフト回路では、___S___[0]]~___S___[2]]を操作することにより、以下の8種類の算術シフトを行えます。

___S___[0]] ___S___[1]] ___S___[2]]
0ビット右に算術シフト 0 0 0
1ビット右に算術シフト 1 0 0
2ビット右に算術シフト 0 1 0
3ビット右に算術シフト 1 1 0
4ビット右に算術シフト 0 0 1
5ビット右に算術シフト 1 0 1
6ビット右に算術シフト 0 1 1
7ビット右に算術シフト 1 1 1

左に算術シフトするシフト回路

左に算術シフトするシフト回路は、左に論理シフトするシフト回路と同じです。