【问题标题】:C# need to increment (with overflow) and individually access 2bitsC# 需要递增(有溢出)并单独访问 2 位
【发布时间】:2013-09-02 08:19:17
【问题描述】:

我想使用 2bits 在循环中打开和关闭部分数学语句。有点像:

Result[i] = someMath*bits[0] + someMath*bits[1]

(bits[n] 指的是 index n,不是 n 的值)

将它们用作标志,但随后在每个循环中我想将它们更多地作为二进制编码值递增:

位++

因此,每次迭代时,2 位将循环通过 00,01,10,11,00,01 ...

搜索我找到了位域,但我没有看到类似增量或数组的方式来访问元素。

任何想法表示赞赏。

如果它必须是 8 位,那很好,最低两位仍将遵循我所追求的模式;)

【问题讨论】:

标签: c# flags bits bit-fields


【解决方案1】:
Result[i] = someMath*(bits&1) + someMath*((bits&2)>>1)

【讨论】:

  • '&' 是逻辑与? '>>' 是右移一次吗?在这种情况下,位是什么类型?它是如何初始化的?感谢您的帮助,我对实际的代码实现很陌生,花更多的时间思考而不是做,坏习惯!另外,如果我想直接访问一个元素,比如第 n 位,在这种情况下是如何工作的?
  • & 是 C# 中的按位和操作数。 >> N 将 N 位向右移动:“(bits & 1)”让您可以访问“0”位(或第一个),“(bits & 2) >> 1”让您可以访问“1”位(或第二个)还有“(位和 N)>> N-1”让您可以访问“N-1”位(或第 N 个)
  • 更正错误:“(bits & N) >> N-1”让您可以访问“N-1”位(或第 N 个)正确:“(位 & (1 > N-1" 让您可以访问“N-1”位(或第 N 个)
猜你喜欢
  • 1970-01-01
  • 2011-03-03
  • 2019-01-11
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
相关资源
最近更新 更多