【问题标题】:Limitations to Bitwise Systems对位系统的限制
【发布时间】:2012-11-09 00:22:35
【问题描述】:

我刚刚学习了一些关于 Bits 工作原理的在线教程。虽然我有几个问题。我已经搜索了互联网,但没有找到我要找的东西。我可能一直在搜索一些不正确的关键词。

假设我希望使用按位构建选项或权限系统(我认为这是正确的术语)。我有以下犹豫:

1) 使用 & 等时是否可能会发生冲突?

2) 如果存在冲突机会,我在设计权限时应该采取哪些步骤?如果我有相当大的权限集,权限编号是否会改变,例如超过500?

希望我的问题能正确表达,如果没有请告诉我,我会尝试改写。

编辑:: 我相信这里的类似问题已经得到解答

User role permissions for different modules using bitwise operators

【问题讨论】:

  • 例如以下网站是我用来学习按位运算的网站之一。 litfuel.net/tutorials/bitwise.htm。在底部附近,它提供了一个示例,我将如何使用约 500 个权限,因为数字会不断增加。权限包括查看/添加/编辑/删除网站的大约 100 个不同部分?
  • 500 个权限?你到底怎么能有这么多,我个人从来没有超过一个字节..
  • 如果您使用动态内容,这是可能的。除非计数会被重置,因为它在技术上可以被标记为自己的“组”。
  • 通常当你使用位来存储权限数据时,你有像读、写、删除这样适合 3 位的东西。如果你有 500 个权限,你就有 500 个不同的标志来确定可能的操作表明您可能在这方面走错路的资源?
  • @N.B. - “位字段”可能如此之大的一种方式是当您拥有大量数据源但您只会发送其中的一部分时。在数据开头有一个很长的字符串,比如 '1100011101010100010110001' 后跟所有数据值(可能是 CSV)“, x, y, z, a, b, c, 10, 20, 30, 40 , 50, 60"。这样,您只需发送必要的数据,请使用定义即将到来的数据的标头。一种稀疏矩阵....

标签: php bit-manipulation


【解决方案1】:
  1. 什么样的碰撞?
  2. 对于 500 种不同的权限,您必须存储 500 位。不存在可以直接处理 500+ 位值的计算机。使用位系统,您基本上只能使用底层 cpu 可以提供的功能,例如8、16、32、64 位大小的值。除此之外的任何内容都必须拆分为多个不同的内存块。

例如

permission_flags && (1 << 475)

在现有的每一个平台上都会失败,因为一旦你超过了第 63 位,你就超过了 cpu 可以直接支持的东西。

【讨论】:

  • 你的意思是permission_flags &amp; (1 &lt;&lt; 475)(单&amp;而不是双);它也不会以明显的方式失败,它只会简单地评估为零。
  • “目前还没有可以直接处理 500+bit 值的计算机” - 实际上Intel's Xeon Phi aka MIC aka Knight's Corner 有 512 位 SIMD 并支持向量寄存器上的 512 位按位运算。
  • @paul r:唷。很酷的东西。但无论哪种方式,使用按位运算处理 500 多个权限标志简直是疯狂的边缘。
  • 当然——但是当谈到极客学究时,谁能抗拒呢? ;-)
  • @PaulR 512 位 SIMD,所以它仍然不能做移位,只有 and。
猜你喜欢
  • 2021-10-12
  • 2023-03-21
  • 1970-01-01
  • 2018-12-14
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
相关资源
最近更新 更多