このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1263824755/962
#  [1] 授業単元: C言語基礎 
#  [2] 問題文(含コード&リンク): 
#  数値中のすべてのビットを左端までシフトするプログラムを作成しなさい。 
#  例えば、01010110(二進法)は11110000(二進法)となります。 
#  


二進数表現の全ての1であるビットを左側に寄せてシフトする([],[]) :- !.
二進数表現の全ての1であるビットを左側に寄せてシフトする([0|R1],[1|R3]) :-
      残りの最初の1と置換する(R1,R2),
      二進数表現の全ての1であるビットを左側に寄せてシフトする(R2,R3).
二進数表現の全ての1であるビットを左側に寄せてシフトする([0|R1],[0|R1]) :- !.
二進数表現の全ての1であるビットを左側に寄せてシフトする([1|R1],[1|R2]) :-
      二進数表現の全ての1であるビットを左側に寄せてシフトする(R1,R2).

残りの最初の1と置換する([1|R1],[0|R1]) :-!. 
残りの最初の1と置換する([0|R1],[0|R2]) :- 
      残りの最初の1と置換する(R1,R2).