‘>>’,‘<<’和‘&’的使用
>>:
n = n >> 1
是使用位移运算符将 n 向右移动一位的操作。在 C 语言中,>>
是右移位运算符,表示将二进制数向右移动指定的位数。
对于无符号整数,在右移位操作时,高位用 0 填充。例如,如果 n 的二进制表示是 10101010
,执行 n = n >> 1
操作后,n 的值将变为 01010101
。
对于有符号整数,右移位操作存在两种情况。如果该整数是正数,那么在右移位操作时,高位用 0 填充。如果该整数是负数,那么在右移位操作时,高位用 1 填充。例如,如果 n 的二进制表示是 11110000
,执行 n = n >> 1
操作后,n 的值将变为 11111000
。
在此题中,n = n >> 1
可以用来将 n 除以 2,并将结果赋值给 n。这样可以得到 n 的一半值(向下取整)。
<<:
<<
是左移位运算符,用于将一个整数的二进制表示向左移动指定的位数。在 C 语言中,左移位运算符 <<
的使用格式为 a << b
,其中 a 和 b 都是整数,表示将 a 向左移动 b 位。
例如,如果 a 的二进制表示是 1010
,执行 a = a << 1
操作后,a 的值将变为 10100
。
在左移操作时,低位补 0。例如,如果 a 的二进制表示是 1010
,执行 a = a << 2
操作后,a 的值将变为 101000
。
在此题中,1 << i
表示将数字 1 的二进制表示向左移动 i 位,得到的结果是一个二进制数,其中只有第 i 位是 1,其余位都是 0。这可以用来获取数字的二进制表示中的某一位。例如,如果要获取数字 n 的第 i 位,可以通过 (n >> i) & 1
来实现,其中 (n >> i)
表示将 n 向右移动 i 位,得到的结果是 n 的二进制表示中从右往左数的第 i 位,& 1
表示将这个位上的值与 1 进行按位与操作,得到的结果就是 n 的二进制表示中从右往左数的第 i 位的值。
&:
n & 1
是使用位运算符进行按位与操作的表达式。在 C 语言中,&
是按位与运算符,它对两个操作数的二进制表示进行按位与操作。
具体来说,n & 1
将 n 和 1 的二进制表示进行按位与操作。这个操作的结果是一个新的整数,其中每个位都是通过将 n 和 1 的相应位进行与操作得到的。
在二进制中,1 的二进制表示是 00000001
。假设 n 的二进制表示为 abcdefgh
,则 n & 1
的结果是 0...0h
,其中 h 是 n 的最低位。
由于 1 的二进制表示只有最低位是 1,其他位都是 0,因此 n & 1
的结果就是 n 的最低位的值。
在此题中,n & 1
可以用来判断 n 的最低位是 0 还是 1。如果结果为 0,表示 n 的最低位是 0;如果结果为 1,表示 n 的最低位是 1。这可以用来判断 n 是偶数还是奇数。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!