C# 如何把二进制里的"1"变"0"把"0"换成"1"呢
如题,我要实现 假设一个随即长度的二进制数 “111001011”用循环判断 改成“000110100”该如何实现呢,到底有没有可能实现呢?
------解决方案--------------------循环就免了,用规则异或:
有多少位你就创建多少位的1,然后^11111...(和你传入的二进制长度一样);
------解决方案--------------------不用循环,~运算符按位取反就可以了。
------解决方案--------------------http://msdn.microsoft.com/zh-cn/library/system.collections.bitarray.aspx
------解决方案--------------------字符串的话,
string s = "111001011";
s = new string(s.Select(x => x == '0' : 1 : 0).ToArray());
------解决方案--------------------多看书 , 先把 | ^ % || && 看懂了再说
------解决方案--------------------取反搞定
------解决方案--------------------这个是那个帖子
http://topic.csdn.net/u/20120619/22/a828f857-3917-452c-a71c-c084642861ef.html
------解决方案--------------------发错地方了 这个没用的不用看了
------解决方案--------------------异或取反+1
------解决方案--------------------有长度length和数值value就可以直接算了:2 ^ length - value
如“111001011”长度为9,value是459,结果就是2 ^ 9 - 459 = 512 - 459 = 53 (110101)
------解决方案-------------------- 按位 取反啊,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
------解决方案--------------------又学习到新东西了 愁啊 永远都学不完