【发布时间】:2011-02-09 12:03:06
【问题描述】:
我尝试解决这个问题已经有一段时间了,但不能仅使用整数算术和位运算符。但是,我认为这是可能的,而且应该相当容易。我错过了什么?
问题:获取任意长度的整数值(这与问题无关),它的 X 最低有效位设置为 1,其余为 0。例如,给定数字 31,我需要得到一个等于 0x7FFFFFFF 的整数值(31 个最低有效位为 1,其余为 0)。
当然,使用循环或将移位的 1 转换为整数 X 次就可以了。但这不是我正在寻找的解决方案。它应该更靠近(X << Y - 1),因此不使用循环。
【问题讨论】:
标签: c# algorithm integer bit-manipulation math