说我有一个整数变量a
,它的位表示为101010
,在这种情况下,我需要将所有位值1, 0
求和在一起,得出3
。是否有比此天真的代码更有效的方法
sum = 0
do i=0, bit_size(a) - 1
sum = sum + ibits(a, i, 1)
end do
答案 0 :(得分:2)
来自https://gcc.gnu.org/onlinedocs/gfortran/POPCNT.html:
说明:
POPCNT(I) returns the number of bits set (’1’ bits) in the binary representation of I.
标准
Fortran 2008 and later
班级:
Elemental function
语法:
RESULT = POPCNT(I)