在Fortran中对变量的所有位值求和的有效方法

时间:2019-06-16 13:02:51

标签: fortran

说我有一个整数变量a,它的位表示为101010,在这种情况下,我需要将所有位值1, 0求和在一起,得出3。是否有比此天真的代码更有效的方法

sum = 0
do i=0, bit_size(a) - 1
    sum = sum + ibits(a, i, 1)
end do

1 个答案:

答案 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)