首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >debug_backtrace位掩码用法

debug_backtrace位掩码用法
EN

Stack Overflow用户
提问于 2012-07-01 03:06:16
回答 3查看 6.6K关注 0票数 18

正在尝试理解debug_backtrace上的php手册中的这个条目。

我不明白他们所说的“这个参数是...的位掩码”是什么意思。

我已经做了位掩码的网络搜索,我的头都晕了,所以我决定我并不是真的想了解它的细节,而只是想知道我应该如何在这个功能中添加选项。

我是否将两个选项都放入,如

代码语言:javascript
复制
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS)

如果我想要两个和其中一个如果我只想要那一个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-01 03:10:38

这意味着您可以使用按位OR运算符组合选项:|

例如:

代码语言:javascript
复制
 debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);

有关位掩码的更多详细信息,请访问:http://en.wikipedia.org/wiki/Mask_(computing)

票数 11
EN

Stack Overflow用户

发布于 2013-05-22 18:21:56

请注意,这两个常量(DEBUG_BACKTRACE_PROVIDE_OBJECT、DEBUG_BACKTRACE_IGNORE_ARGS)在含义上是不同的。当存在DEBUG_BACKTRACE_PROVIDE_OBJECT时,DEBUG_BACKTRACE_IGNORE_ARGS提供一个额外的对象,而当存在参数时,args将被剥离。

由于这些常量最常见的用例是减少内存使用,因此内存消耗最少的方法是:

代码语言:javascript
复制
debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);

代码语言:javascript
复制
// false friend!
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);

它覆盖了DEBUG_BACKTRACE_PROVIDE_OBJECT的默认值并另外忽略了DEBUG_BACKTRACE_IGNORE_ARGS。

票数 18
EN

Stack Overflow用户

发布于 2012-07-01 03:20:49

常量的十进制值为2^n,二进制为(10)^n。例如- 1、10、100、1000等(二进制)。

a=001, b=010, c=100

您可以执行按位或,例如,ab。这将意味着,如果a或b中的相同位是'on‘,则每个位将被’打开‘。

代码语言:javascript
复制
a | b == 011

这是一个位掩码。通过以下方式检查位掩码是否包含a

代码语言:javascript
复制
bitmask & a != 0

这就是

代码语言:javascript
复制
011 & 001 == 001 != 0

但是,因为c不在位掩码中:

代码语言:javascript
复制
bitmask & c == 011 & 100 == 0

因此,要在位掩码中同时包含a和b,可以使用二进制或运算符。

代码语言:javascript
复制
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11276870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档