C# 如何把二进制里的"1"变"0"把"0"换成"1"呢

zmidl 2012-09-25 08:47:51
如题,我要实现 假设一个随即长度的二进制数 “111001011”用循环判断 改成“000110100”该如何实现呢,到底有没有可能实现呢?
...全文
852 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmidl 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
异或取反+1
[/Quote]
比如我有个 数组 aa

string[] aa = Regex.Split(textBox1.Text.ToString(), " ",RegexOptions.IgnoreCase);
for (int i = 0; i < aa.Length;i++ )
{
cc ^= Convert.ToByte(aa[i].ToString(), 16);
}
// cc 异或累加后 如何把这个 cc 取反呢?怎么写?
xggllc 2012-09-26
  • 打赏
  • 举报
回复
按位 取反啊,LZ
“ ~ ”就是这个符号
1、运算规则
~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,1变0。
2、用途
使一个整数a的最低位为0,可以用:a=a&~1;
 3、例如~9的运算为: ~(0000000000001001)结果为:1111111111110110
你补充一下位运算的知识
http://www.cnblogs.com/NetBelieve/archive/2012/07/30/2615006.html
wy811007 2012-09-26
  • 打赏
  • 举报
回复
又学习到新东西了 愁啊 永远都学不完
Jia_H 2012-09-25
  • 打赏
  • 举报
回复
有长度length和数值value就可以直接算了:2 ^ length - value

如“111001011”长度为9,value是459,结果就是2 ^ 9 - 459 = 512 - 459 = 53 (110101)
milanow 2012-09-25
  • 打赏
  • 举报
回复
异或取反+1
crystal_lz 2012-09-25
  • 打赏
  • 举报
回复
发错地方了 这个没用的不用看了
[Quote=引用 7 楼 的回复:]

这个是那个帖子
http://topic.csdn.net/u/20120619/22/a828f857-3917-452c-a71c-c084642861ef.html
[/Quote]
crystal_lz 2012-09-25
  • 打赏
  • 举报
回复
这个是那个帖子
http://topic.csdn.net/u/20120619/22/a828f857-3917-452c-a71c-c084642861ef.html
crystal_lz 2012-09-25
  • 打赏
  • 举报
回复
取反搞定
ttover89 2012-09-25
  • 打赏
  • 举报
回复
多看书 , 先把 | ^ % || && 看懂了再说
threenewbee 2012-09-25
  • 打赏
  • 举报
回复
字符串的话,
string s = "111001011";
s = new string(s.Select(x => x == '0' : 1 : 0).ToArray());
threenewbee 2012-09-25
  • 打赏
  • 举报
回复
不用循环,~运算符按位取反就可以了。
蔡袅 2012-09-25
  • 打赏
  • 举报
回复
循环就免了,用规则异或:
有多少位你就创建多少位的1,然后^11111...(和你传入的二进制长度一样);

109,894

社区成员

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

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

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