84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
对于形如value = value | 1 << bit_number的表达式,目的是将指定位设为1。
value = value | 1 << bit_number
不明白的是:此表达式运算符优先级|大于<<吗,要是这样的话,例如:value为01011100,bit_number为3,可是计算之后很多位发生了变化,感觉不太对。那要是<<优先级大于|,那么先将bit_number左移一位,再进行或操作,感觉也是好多为发生了变化。所以,关键点是指定位指的是哪几个位?
|
<<
value
bit_number
先谢谢了。
小伙看你根骨奇佳,潜力无限,来学PHP伐。
首先,<<的优先级大于|。
其次你的理解有个错误:<<右移运算符是把运算法左侧的参数右移右侧参数个位置,也就是说1 << bit_number不是把bit_number右移1位,而是把1右移bit_number位。举你的例子,bit_number为3时,1 << bit_number的结果是00001000。再与value的01011100进行与操作,就能把右数第4位变成1了。
1 << bit_number
1
3
00001000
01011100
4
指定位就是某一位,这里指代的是从右往左数的第bit_number+1位
bit_number+1
http://jb51.net/article/37282.htm优先级
<<优先级高于|,运算之后value至多只有一位发生变化。
这个表达式的作用是将value的第bit_number为置1.
比如:value = 01010100, bit_number = 3,运算结果就是(01010100 | 1000) = 01011100
value = 01010100, bit_number = 3
(01010100 | 1000) = 01011100
1 << bit_number 是0000 0001(假设为8 bit)左移bit_number位,而不是bit_number左移一位,基本概念不熟悉,先看看基础。。。。
<< 的优先级比 | 高.
1 << bit_number 是把 1 左移 bit_number 位, 所以它结果是一个只包含一个 1 的二进制数 (它从右到左数的第 bit_number 位是 1). 比如, 1 << 3 得到的二进制数是 1000.
1 << 3
这样以后再和 value 按位作与运算, 作用应该一目了然了.
首先,
<<
的优先级大于|
。其次你的理解有个错误:
<<
右移运算符是把运算法左侧的参数右移右侧参数个位置,也就是说1 << bit_number
不是把bit_number
右移1
位,而是把1
右移bit_number
位。举你的例子,
bit_number
为3
时,1 << bit_number
的结果是00001000
。再与value
的01011100
进行与操作,就能把右数第4
位变成1
了。指定位就是某一位,这里指代的是从右往左数的第
bit_number+1
位http://jb51.net/article/37282.htm
优先级
<<
优先级高于|
,运算之后value
至多只有一位发生变化。这个表达式的作用是将
value
的第bit_number
为置1.比如:
value = 01010100, bit_number = 3
,运算结果就是(01010100 | 1000) = 01011100
1 << bit_number 是0000 0001(假设为8 bit)左移bit_number位,而不是bit_number左移一位,基本概念不熟悉,先看看基础。。。。
<<
的优先级比|
高.1 << bit_number
是把 1 左移 bit_number 位, 所以它结果是一个只包含一个 1 的二进制数 (它从右到左数的第 bit_number 位是 1). 比如,1 << 3
得到的二进制数是 1000.这样以后再和
value
按位作与运算, 作用应该一目了然了.