当前位置: 首页 > 面试题库 >

位掩码的大小有实际限制吗?

谷博艺
2023-03-14
问题内容

有一种通用的方法,可以使用位掩码将多个值存储在一个变量中。例如,如果用户对某项具有读,写和执行特权,则可以通过说出该特权并将其转换为一个数字read = 4 (2^2), write = 2 (2^1), execute = 1 (2^0),然后将它们加在一起得到7。

我在几种Web应用程序中使用了这种技术,通常将变量存储到一个字段中,并根据不同值的数量为它提供MEDIUMINT或其他类型。

我感兴趣的是,这样存储的值数量是否有实际限制?例如,如果数字超过64,则不能再使用(64位)整数。如果是这种情况,您将使用什么?它会如何影响您的程序逻辑(即:您是否仍可以使用按位比较)?

我知道一旦您开始获得非常多的值集,一种不同的方法将是最佳解决方案,但是我对 这种 方法的边界很感兴趣。


问题答案:

在我脑海中,我写了一个set_bitandget_bit函数,它可以使用字节数组和数组中的位偏移量,并使用一些位扭曲来设置/获取数组中的适当位。像这样的东西(用C语言编写,但希望您能理解):

// sets the n-th bit in |bytes|. num_bytes is the number of bytes in the array
// result is 0 on success, non-zero on failure (offset out-of-bounds)
int set_bit(char* bytes, unsigned long num_bytes, unsigned long offset)
{
  // make sure offset is valid
  if(offset < 0 || offset > (num_bytes<<3)-1) { return -1; }

  //set the right bit
  bytes[offset >> 3] |= (1 << (offset & 0x7));

  return 0; //success 
}

//gets the n-th bit in |bytes|. num_bytes is the number of bytes in the array
// returns (-1) on error, 0 if bit is "off", positive number if "on"
int get_bit(char* bytes, unsigned long num_bytes, unsigned long offset)
{
  // make sure offset is valid
  if(offset < 0 || offset > (num_bytes<<3)-1) { return -1; }

  //get the right bit
  return (bytes[offset >> 3] & (1 << (offset & 0x7));
}


 类似资料:
  • 本文向大家介绍Java位掩码控制权限与(&)或(|)非(~)、>的介绍,包括了Java位掩码控制权限与(&)或(|)非(~)、>的介绍的使用技巧和注意事项,需要的朋友参考一下 1. java 位掩码 java 位掩码,在java开发中很少有场景会用到掩码,但是当系统中需要判断某个对象是否有 某些权限时,可以通过位掩码来做。 位掩码 主要通过位运算,例如与(&)、非(~)、或(|)、异或(^)、移位

  • 我做了一些测试,发现CosmosDB的最大文档大小限制似乎与文档不一致:https://docs . Microsoft . com/en-us/azure/cosmos-db/concepts-limits # per-item-limits 创建 Cosmos DB 核心 (SQL) 数据库 尝试将2093334字节的项目插入到“项目”表中 它之所以成功,是因为它:

  • 问题内容: 我想做这样的事情: 您可以用Java这样做吗?(我来自ac#背景) 问题答案: 您可以轻松地使用

  • 我面临以下问题/行为: 这是什么导致的?大数/浮动的小数位有限制吗? 它是否与IEEE 754标准相关(如本文所述:浮点数学是否被破坏?)? 最后——我该如何解决这个问题?

  • 问题内容: 我正在使用ASP.NET MVC开发站点。CSS文件已增长到88KB,并且有5,000行多一点。我最近注意到,最后添加的样式在浏览器中不存在。CSS文件或行数有大小限制吗? 编辑 :对不起,我忘记提及此问题在Windows 7中同时在FireFox和IE8中发生。 问题答案: 我认为,如果您对CSS文件的大小有疑问,那么该是 重新考虑样式策略的时候了 。CSS中的C代表级联。通常,当C

  • 问题内容: 我通过Ajax将ckeditor内容发布到php。但是在我的数据库表中得到4-5句已发布材料的句子。我想知道,ajax发布有大小限制吗?有什么办法可以通过ajax发布大文本内容? 我的js看起来像这样 问题答案: HTTP规范没有为帖子强加特定的大小限制。它们通常会受到Web服务器或用于处理表单提交的编程技术的限制。 您使用哪种服务器?