请问位运算符怎么理解?
答案:2 悬赏:70 手机版
解决时间 2021-11-15 16:28
- 提问者网友:心如荒岛囚我终老
- 2021-11-14 22:25
请问位运算符怎么理解?
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-11-14 23:10
1. 位运算符有什么用?
这个还真不太好说,看起来有点不太负责任的,但实际上就那么回事的回答是:当你需要用到的时候,你就会感觉有用了。
举个小例子,假设有一个东西有8种工作状态,那么,通常的情况下,你当然可以每个状态做一个标志变量,比如,A真代表某通道打开,A假代表某通道关闭...等等,但在某些情况下(比如变量没有那么多,或者出于管理方便的考虑等等),那么你考虑使用一个8位的变量,并通过对这个变量进行位运算来判断是很常用的1个小技巧。
2. 解释一下这段代码,
程序上没啥好解释,后面的注释也说明了,而要想看明白结果,你需要补充一下数学知识(二进制数运算)。
简单说一下:
十进制12=二进制 1100
十进制 8=二进制 1000
$mn = $m & $n ; //位与
1100
与 1000
-----------
1000 结果= 8
1100
或 1000
-----------
1100 结果= 12
1100
异或 1000
---------------
0100 结果= 4追问请问各个进制的关系?追答简单点说:
十进制,逢10进1;
二进制,逢2进1;
十六进制,逢16进1;
各进制间的转换,要解释起来就比较烦琐了,建议你搜索下相关的资料。
一个比较直观形象的进制间关系,你可以打开windows附件里的计算器软件,你可以在不同进制之间进行转换,从而体验下。
这个还真不太好说,看起来有点不太负责任的,但实际上就那么回事的回答是:当你需要用到的时候,你就会感觉有用了。
举个小例子,假设有一个东西有8种工作状态,那么,通常的情况下,你当然可以每个状态做一个标志变量,比如,A真代表某通道打开,A假代表某通道关闭...等等,但在某些情况下(比如变量没有那么多,或者出于管理方便的考虑等等),那么你考虑使用一个8位的变量,并通过对这个变量进行位运算来判断是很常用的1个小技巧。
2. 解释一下这段代码,
程序上没啥好解释,后面的注释也说明了,而要想看明白结果,你需要补充一下数学知识(二进制数运算)。
简单说一下:
十进制12=二进制 1100
十进制 8=二进制 1000
$mn = $m & $n ; //位与
1100
与 1000
-----------
1000 结果= 8
1100
或 1000
-----------
1100 结果= 12
1100
异或 1000
---------------
0100 结果= 4追问请问各个进制的关系?追答简单点说:
十进制,逢10进1;
二进制,逢2进1;
十六进制,逢16进1;
各进制间的转换,要解释起来就比较烦琐了,建议你搜索下相关的资料。
一个比较直观形象的进制间关系,你可以打开windows附件里的计算器软件,你可以在不同进制之间进行转换,从而体验下。
全部回答
- 1楼网友:冷風如刀
- 2021-11-14 23:48
$a & $b and(按位与)
$a | $b or(按位或)
$a ^ $b Xor(按位异或)
~$a Not(按位非)
$a << $b Shift left(左移)
$a >> $b Shift right(右移)
详解
$a & $b 按位与 把$a和$b中都为1的位设为1;
例:10 & 12 = 8
10 1010
12 1100
1000 8
$a | $b 按位或 把$a或$b中有一个为1的为设为1;
例:10 | 12 = 14
10 1010
12 1100
$a | $b or(按位或)
$a ^ $b Xor(按位异或)
~$a Not(按位非)
$a << $b Shift left(左移)
$a >> $b Shift right(右移)
详解
$a & $b 按位与 把$a和$b中都为1的位设为1;
例:10 & 12 = 8
10 1010
12 1100
1000 8
$a | $b 按位或 把$a或$b中有一个为1的为设为1;
例:10 | 12 = 14
10 1010
12 1100
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯