BitScanForward - Fehler C4146
-
Ich möchte
unsigned long long NextBit(BITBOARD bb) { //assert(bb != 0); return __popcnt64((bb & -bb) - 1); }
anwenden als schnelles BitScanForward mit popcnt, erhalte aber den Fehler C4146.
Quelle: https://www.chessprogramming.org/BitScan#Index_of_LS1B_by_PopcountWie kann ich das umgehen?
-
return __popcnt64((bb & (0u-bb)) - 1);
-
@hustbaer sagte in BitScanForward - Fehler C4146:
return __popcnt64((bb & (0u-bb)) - 1);
Vielen Dank!
-
BTW: Es gibt auch noch die Intrinsics
_BitScanForward(64)
und_BitScanReverse(64)
.
-
Was ist schneller? Bin da an einer Schach Engine. Falls jemand Lust/Zeit hat mitzuwirken:
https://github.com/ehenkes/PrettyHardyChessEngine
-
Keine Ahnung was schneller ist. Müsstest du Benchmarken. Wird u.U. auch drauf ankommen wann das Ergebnis gebraucht wird/wie der Code der drumehrum ist aussieht.
Also idealerweise nicht isoliert benchmarken sondern mit einem Benchmark der grössere Teile des Codes drumherum mit ausführt.