C程序设置k个低位位

Nee*_*eel 10 c bit-manipulation bit

对于32位整数,如何在C中设置k个低位?

Gra*_*row 17

假设您要设置32位整数xk个最低位,我相信这将起作用:

if( k > 0 ) {
    x |= (0xffffffffu >> (32-k))
}
Run Code Online (Sandbox Code Playgroud)

  • 如果我在`0xffffffffu`傻笑一下,这样可以吗?:P (4认同)
  • 注意,对于"k = 0",这将失败(将32位操作数移位32位或更多位是未定义的行为). (3认同)
  • +1很好,但我会使用无符号文字`0xffffffffu`来确保编译器不会尝试复制符号位. (2认同)
  • @user根本没有.OR为0,对低位无效.`x | =〜(0xffffffff << k)``tho'. (2认同)

kay*_*kay 10

要设置n最低有效位k,可以使用算术:

k |= (1 << n) - 1;
Run Code Online (Sandbox Code Playgroud)

(n以小于或等于你的int大小.)

  • 如果`n`等于`int`类型的宽度,则会失败. (4认同)

Vin*_*ura 1

类似的东西

设置 k 个低位:

while (k) {
    k--;
    num |= (1<<k);
}
Run Code Online (Sandbox Code Playgroud)

这是你的意思吗?