想问一下一个C语言的位运算小问题?-灵析社区

momo

想问一下一个C语言的位运算小问题. 有没有一个简单的表达式的写法,可以得到一个32位无符号数,只保留其最左侧或者最右侧的1的结果? 比如35=(000..0100011),得到32或者1? 用循环写的话不难,但,用一个简洁的表达式能写出来吗?

阅读量:179

点赞量:0

问AI
办公室高手
high: i |= (i>>1); i |= (i>>2); i |= (i>>4); i |= (i>>8); i |= (i>>16); high = i-(i>>1); low low = i - (i & (i-1)); 0 都需要提前判断。