[過去ログ] スレ立てるまでもない質問はここで 165匹目 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
973: (ワッチョイ c7e3-Rf8y) 2024/12/11(水)15:06 ID:j0qahdVT0(1/3) AAS
popCountが2進数でみたときに立っている1のビットの個数を表す関数として
(popCount (xor x (x-1)))-1
というコードが
最右の1がたっているビットの位置を返す(8なら3 4なら2 3や5や1なら0
というものみたいなのですがなぜこうなるのか解説していただけませんか
xor x (x-1)の部分だけでも良いので(C言語だとx^(x-1))お願いします
975: (ワッチョイ c7e3-Rf8y) 2024/12/11(水)15:27 ID:j0qahdVT0(2/3) AAS
入力です。参考までにC++コードでかきました
#include <bits/stdc++.h>
using namespace std;

int popCount(int x){ return __builtin_popcount(x);}

int leastBit(int x){
return (popCount(x^(x-1))-1);
}
int main() {
for(int i=1;i<10;++i){
cout << leastBit(i) << endl;
省2
977: 973 (ワッチョイ c7e3-Rf8y) 2024/12/11(水)15:41 ID:j0qahdVT0(3/3) AAS
>>976
理解できました!ありがとうございます!
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s