if (((number >> i) & 1) == 1)这是我的代码示例。这个运算的返回值是如何确定的?我们把数字向左或向右移位。返回值是什么?if (((number >> i) & 1) == 1)
if (((number >> i) & 1) == 1)
gg0vcinb1#
number >> i将number按位向右移位i位:
number >> i
number
i
number i number >> i ------ - ----------- 01010101 1 00101010 01010101 2 00010101 01010101 3 00001010
等等。(number >> i) & 1对number >> 1和1执行按位与运算:
(number >> i) & 1
number >> 1
1
00101010 (01010101 >> 1) & 00000001 ---------- 00000000 00010101 (01010101 >> 2) & 00000001 ---------- 00000001
所以基本上,
如果移位值的低位被设置,则将分支。
snvhrwxg2#
在此操作中如何确定返回值?没有返回值。有一个带有相等运算符的if语句
相等运算符的结果是0或int类型的值1,这取决于表达式的两个操作数((number >> i) & 1)和1是否相应地彼此不等或相等。如果结果是1(操作数彼此相等),则if语句的子语句将获得控制权。因此,of语句检查number的i-th位是设置为1还是0。
0
int
((number >> i) & 1)
i-th
z0qdvdin3#
>>是C语言中的右移运算符。((number >> i) & 1)的结果取决于三个因素。
>>
3条答案
按热度按时间gg0vcinb1#
number >> i
将number
按位向右移位i
位:等等。
(number >> i) & 1
对number >> 1
和1
执行按位与运算:所以基本上,
如果移位值的低位被设置,则将分支。
snvhrwxg2#
在此操作中如何确定返回值?
没有返回值。有一个带有相等运算符的if语句
相等运算符的结果是
0
或int
类型的值1
,这取决于表达式的两个操作数((number >> i) & 1)
和1
是否相应地彼此不等或相等。如果结果是1
(操作数彼此相等),则if语句的子语句将获得控制权。因此,of语句检查
number
的i-th
位是设置为1还是0。z0qdvdin3#
>>
是C语言中的右移运算符。((number >> i) & 1)
的结果取决于三个因素。number
的类型为有符号或无符号。number
的总大小(以位为单位),即8 * sizeof(number)。i
的值。| |
number
有符号|number
无符号|| - ------|- ------|- ------|
| * *
i
的值〉=number
的总大小(以位为单位)|number
的有符号位|无|| * *
i
的值〈number
的总大小(以位为单位)|number
的第i
位(LSb为第0位)|number
的第i
位(LSb为第0位)|