Fortran代码:
FUNCTION IS_POWER_OF_2(N) INTEGER N IF(N <= 0) THEN IS_POWER_OF_2 = .FALSE. ELSEIF(BITAND(N, N-1) == 0) THEN ! 判断N与(N-1)按位与是否为0 IS_POWER_OF_2 = .TRUE. ELSE IS_POWER_OF_2 = .FALSE. ENDIF END FUNCTION
该函数接受一个整数参数N,并返回一个逻辑值,表示N是不是2的幂次方。函数的实现逻辑为:
如果N小于等于0,则N不是2的幂次方,返回False。
如果N按位与上(N-1)的结果为0,则N是2的幂次方,返回True。
否则,N不是2的幂次方,返回False。
可以使用以下代码调用该函数并输出结果:
PRINT *, IS_POWER_OF_2(0) ! False PRINT *, IS_POWER_OF_2(1) ! True PRINT *, IS_POWER_OF_2(2) ! True PRINT *, IS_POWER_OF_2(3) ! False PRINT *, IS_POWER_OF_2(4) ! True PRINT *, IS_POWER_OF_2(5) ! False
输出结果: .F. .T. .T. .F. .T. .F.