如果我使用单个 int 来表示 ascii 字符集,如何使用它来减少 8 倍的存储空间?与 256 个布尔值的数组相比?单个 int 也像位向量一样工作。
java中的布尔值将占用1位,因为它只能表示真或假值。例如,如果我有一个布尔值数组。boolean[] char_set = new boolean[256] 这将占用 256 位对吗?我正在阅读,如果我使用像位向量这样的单个 int,这意味着我可以使用 32 位来覆盖 256 个值。我想这是减少了 8 倍。但是为什么下面的代码有效?
它正在检查字符串中是否有任何重复项。他们假设一个 ascii 字符集。Str 是一些字符串。
int checker = 0;
for(int i=0;i<str.length();i++)
{
int val = str.charAt(i) - 'a';
if(checker& (1<<val)) > 0)
{
return false;
}
checker |= (1<<val);
}
return true;
}
有人可以特别解释一下在这种情况下位向量逻辑是如何工作的。他们假设字符串包含小写字符。