このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 150代目 #188 # [1] 授業単元: 演算子 # # [2] 問題文: 変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成し、それを用いて実際に 1 のビット数を数えて、その値を出力するプログラムを作成せよ。 # '変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成し、それを用いて実際に 1 のビット数を数えて、その値を出力する'(_整数) :- '変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成し、それを用いて実際に 1 のビット数を数えて、'(_整数,_1のビット数), その値を出力する(_1のビット数). '変数の下位16ビット中の 1 のビット数を数える関数 int bit_count(int x) を作成し、それを用いて実際に 1 のビット数を数えて、'(_整数,_1のビット数) :- bit_count(_整数,_1のビット数). bit_count(_整数,_1のビット数) :- _下位16ビット is _整数 mod 2 ^ 16, bit_count(_下位16ビット,0,_1のビット数). bit_count(0,_1のビット数,_1のビット数) :- !. bit_count(N,_1のビット数_1,_1のビット数) :- 'Nを実、2を法として、N_2に商とMに余りを得て、さらに_1のビット数を計算して行く。'(N,_1のビット数_1,_1のビット数). 'Nを実、2を法として、N_2に商とMに余りを得て、さらに_1のビット数を計算して行く。'(N,_1のビット数_1,_1のビット数) :- 'Nを実、2を法として、N_2に商とMに余りを得る。'(N,N_2,M), bit_count(M,N_2,_1のビット数_1,_1のビット数). 'Nを実、2を法として、N_2に商とMに余りを得る。'(N,N_2,M) :- M is N mod 2, N_2 is N // 2. bit_count(M,N_2,_1のビット数_1,_1のビット数) :- 'Mが1の時は、_1のビットカウント_1を更新してbit_countして行く。'(M,N_2,_1のビット数_1,_1のビット数). bit_count(M,N_2,_1のビット数_1,_1のビット数) :- 'Mが0の時は、_1のビットカウント_1を更新せずにbit_countして行く。'(M,N_2,_1のビット数_1,_1のビット数). 'Mが1の時は、_1のビットカウント_1を更新してbit_countして行く。'(1,N_2,_1のビット数_1,_1のビット数) :- succ(_1のビット数_1,_1のビット数_2), bit_count(N_2,_1のビット数_2,_1のビット数). 'Mが0の時は、_1のビットカウント_1を更新せずにbit_countして行く。'(0,N_2,_1のビット数_1,_1のビット数) :- bit_count(N_2,_1のビット数_1,_1のビット数). その値を出力する(_1のビット数) :- writef('1ビット数の数は %w です。\n',[_1のビット数]).