Java 如何计算2^h*ceil(i/2^h)

Java 如何计算2^h*ceil(i/2^h),java,bit-manipulation,arithmetic-expressions,Java,Bit Manipulation,Arithmetic Expressions,是否有一种简单的计算方法: (2^h)*ceil(i/(2^h)) 其中i和h是整数,而不显式使用上限函数 例如,对于(2^h)*楼层(i/(2^h)),可以使用以下公式计算 i&-(1<<h) i&-(1显然,你的意思是用^求幂而不是按位异或 (i + (1 << h) - 1) & (-1 << h) (i+)(1@Dijkgraaf-javacan我们不能使用-1抱歉,您能更新答案以包括@harold提到的内容吗?

是否有一种简单的计算方法:

(2^h)*ceil(i/(2^h))
其中i和h是整数,而不显式使用上限函数

例如,对于(2^h)*楼层(i/(2^h)),可以使用以下公式计算

i&-(1<<h)

i&-(1显然,你的意思是用
^
求幂而不是按位异或

(i + (1 << h) - 1) & (-1 << h)

(i+)(1@Dijkgraaf-javacan我们不能使用
-1抱歉,您能更新答案以包括@harold提到的内容吗?