写出代码实现如下函数:
/* * Generate mask indicating leftmost 1 in x. Assume w=32. * For example, OxFFOO -> 0x8000, and 0x6600 --> 0x4000. * If x = 0, then return 0. */ int leftmost_one(unsigned x);
函数应该遵循位级整数编码规则,不过你可以假设数据类型int有w=32位。
你的代码最多只能包含15个算术运算、位运算和逻辑运算。
提示:先将x转换成形如[0…011...1]的位向量。