このディレクトリの索引
#  【 課題 】コンソルから値xを取り、二進法に直す。負の整数の場合も変換出来るように。 
#  【 形態 】Javaアプリケーション(main()で開始) 
#  【 GUI  】制限なし 
#  【 期限 】制限なし 
#  【 Ver  】java version "1.7.0_02" 
#  【 補足 】十進xが負の場合、全部0と1を反転させて最後に1を足すのですが、そこの処理が出来ません。

'コンソルから値xを取り、二進法に直す。負の整数の場合も変換出来るように。 ' :-
        'コンソルから値xを取り、'(_x),
        '二進数に直す。'(_x,_二進数).

'コンソルから値xを取り、'(_x) :-
        数を得る(整数,integer(_x),_x).

'二進数に直す。'(_x,_二進数) :-
        _x < 0,
        負数の二進数に変換(1,_x,[],_二進数).        
'二進数に直す。'(_x,_二進数) :-
        _x >= 0,
        '二進数に直す。'(_x,[],_二進数).

'二進数に直す。'(0,L,L).
'二進数に直す。'(N,L1,L) :-
        M is N mod 2,
        D is N // 2,
        '二進数に直す。'(D,[M|L1],L).

負数の二進数に変換(_桁溢れ,N1,L1,L) :-
        M is N mod 2,
        N_1 is N // 2,
        負数の二進数に変換(_桁溢れ,M,N_1,L1,L),!.


負数の二進数に変換(_桁溢れ,_,0,L1,L) :-
        残り桁を埋める(L1,L).
負数の二進数に変換(0,0,N_1,L1,L) :-
        負数の二進数に変換(0,N_1,[1|L1],L).
負数の二進数に変換(0,1,N_1,L1,L) :-
        負数の二進数に変換(0,N_1,[0|L1],L).
負数の二進数に変換(1,0,N_1,L1,L) :-
        負数の二進数に変換(1,N_1,[0|L1],L).
負数の二進数に変換(1,1,N_1,L1,L) :-
        負数の二進数に変換(0,N_1,[1|L1],L).

残り桁を埋める(L,L) :-
        length(L,64),!.
残り桁を埋める(L1,L) :-
        残り桁を計算する([1|L1],L).