C# 位运算 反推

zjlahbf 2013-10-11 11:31:18
很简单。

var a = 2 | 8;

a = 10


如何推算出 10 是有2 和 8 组成的

...全文
344 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjlahbf 2014-02-18
  • 打赏
  • 举报
回复
其实很简单。自己用位运算原理反 一次就可以了
richardgates 2013-10-11
  • 打赏
  • 举报
回复
2 = 0010 8 = 1000 10 = 0010 | 1000
leafmao 2013-10-11
  • 打赏
  • 举报
回复
10|0=10,是限定了只能是两个数相或得到这个值吗
gomoku 2013-10-11
  • 打赏
  • 举报
回复
int能提供32,long能提供64个标志位。 如果你要更多,用位域可能就不合适了。 其他方法包括分割,比如下行,每个数字表示一个标志(已经用到777),用逗号隔开。 1,132,777
zjlahbf 2013-10-11
  • 打赏
  • 举报
回复
引用 3 楼 gomoku 的回复:

static void ShowBits(int number)
{
    for (int i = 0; i < 32; i++)
    {
        int b = 1 << i;
        if ((number & b) > 0) Console.WriteLine(b);
    }
}
................................................ 虽然说 这也算是个办法... 都用C# 4.0 biggerInt了 在我那里面真的比较多。 有没有更靠谱点儿的..
智商余额不足 2013-10-11
  • 打赏
  • 举报
回复
用枚举就能轻松解决~~
智商余额不足 2013-10-11
  • 打赏
  • 举报
回复

[Flags]
public enum SomeFlags
{
    One = 1,
    Two = 2,
    Four = 4,
    Eight = 8
}
static void Main(string[] args)
{
    SomeFlags f = SomeFlags.Two | SomeFlags.Eight;
    Console.WriteLine((int)f);
    Console.WriteLine((f & SomeFlags.Two) == SomeFlags.Two);  //true
    Console.WriteLine((f & SomeFlags.Eight) == SomeFlags.Eight);//true
}
zjlahbf 2013-10-11
  • 打赏
  • 举报
回复
我是限定了 只能 1 2 4 8 16。。。。。。。 这样数. 所以应该还是有算法 能够解决才对
gomoku 2013-10-11
  • 打赏
  • 举报
回复

static void ShowBits(int number)
{
    for (int i = 0; i < 32; i++)
    {
        int b = 1 << i;
        if ((number & b) > 0) Console.WriteLine(b);
    }
}
cheng2005 2013-10-11
  • 打赏
  • 举报
回复
10=2^1 + 2^3
QuickPai 2013-10-11
  • 打赏
  • 举报
回复
no way
wangjcltj 2013-10-11
  • 打赏
  • 举报
回复
只能枚举啊,不然怎么算
leafmao 2013-10-11
  • 打赏
  • 举报
回复
有些数可能有多种组合 10还可以这样相或,10=8|10=10|2,答案不唯一
zjlahbf 2013-10-11
  • 打赏
  • 举报
回复
引用 12 楼 hwenycocodq520 的回复:
[quote=引用 11 楼 zjlahbf 的回复:] [quote=引用 6 楼 hwenycocodq520 的回复:] 用枚举就能轻松解决~~
我就是不想 每个都去比较 才来问的[/quote] sorry 矮东no[/quote] 别。 能来回答 已经很感谢
智商余额不足 2013-10-11
  • 打赏
  • 举报
回复
引用 11 楼 zjlahbf 的回复:
[quote=引用 6 楼 hwenycocodq520 的回复:] 用枚举就能轻松解决~~
我就是不想 每个都去比较 才来问的[/quote] sorry 矮东no
zjlahbf 2013-10-11
  • 打赏
  • 举报
回复
引用 6 楼 hwenycocodq520 的回复:
用枚举就能轻松解决~~
我就是不想 每个都去比较 才来问的

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧