このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/286
#  [1] プログラミング1 
#  [2] 現在のインターネットを実現しているTCP/IP通信プロトコルでは主にIPv4 
#    を用いており、コンピュータを一意に識別するために32ビットのIPアドレスを 
#    用いている。これを踏まえ、IPアドレスの4つの数字を入力させ、これらを32ビットの 
#    データ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。 
#    保存したIPアドレスがunsigned intの整数値として解釈するといくつとなるか表示する 
#    プログラムを作成せよ。  
#  

'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
        var(A1),var(A2),var(A3),var(A4),_アドレス >= 0,
        A1 is _アドレス // 16777216,M1 is _アドレス mod 16777216,
        A2 is M1 // 65536,M2 is M1 mod 65536,
        A3 is M2 // 256,
        A4 is M2 mod 256,!.
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
        var(A11),var(A22),var(A33),var(A44),_アドレス < 0,
        A11 is _アドレス // -16777216,M1 is _アドレス mod -16777216,
        A22 is M1 // -65536,M2 is M1 mod -65536,
        A33 is M2 // ((-1) * 256),
        A44 is M2 mod 256,
        A1 is 255 - A11,A2 is 255 - A22,A3 is 255 - A33,A4 is A44 + 256.!.
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
        A1 > 127,A11 is A1 - 256,
        _アドレス is truncate(A11 * 256 * 256 * 256  + A2 * 256 * 256 + A3 * 256 + A4),!.
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
        A1 < 128,
        _アドレス is truncate(A1 * 256 * 256 * 256  + A2 * 256 * 256 + A3 * 256 + A4),!.