我自己写了个,但是不知错在哪(只用于0到255的数字)string S =Convert.ToString (255,2); Console.WriteLine(S); //不足8位补 switch (S.Length) { case 1: S = "0000000" + S; break; case 2: S = "000000" + S; break; case 3: S = "00000" + S; break; case 4: S = "0000" + S; break; case 5: S = "000" + S; break; case 6: S = "00" + S; break; case 7: S = "0" + S; break; default: break; } char[] C = S.ToCharArray(); int[] Data = new int[8]; for (int i = 0; i < 8; i++) { Data[i] = Convert .ToInt32 (C[i]); } for (int i = 0; i < 8; i++) { if (Data[i] == 0) { Data[i] = 1; } else { Data[i] = 0; } } S = ""; for (int i = 0; i < 8; i++) { S = S + Convert.ToString(Data[i]); } Console.WriteLine(S); Console.ReadLine(); }
回房主: namespace aaa { class Program { static void Main(string[] args) { string str ="0110101001"; char [] arrStr=str.ToCharArray(); int [] arrInt =new int [arrStr.Length]; for (int i = 0; i <= arrStr.Length-1; i++) { arrInt[i] = (int)arrStr[i] - 48;//(反正减0的ASCLL玛值,网了是好多了) Console.WriteLine(arrInt[i]); } } } }
uint i = 0x8FFFFFFF;
string r = Convert.ToString(i, 2);
i = ~i;
string s = Convert.ToString(i, 2);
先把你输入的进制数转换成二进制,(这步很简单撒,我就不写代码了)
然后存入一个数组int[]data,接着就把
for(int i=0,i<=data.length()-1,i++)
{
if(data[i]==1)
{
data[i]==0;
}
else
{
data[i]==1;
}
}
输出修改后的数组即可
msdn上摘的:~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的。备注
用户定义的类型可重载 ~ 运算符。有关更多信息,请参见 operator。在枚举时通常允许整型运算。示例
复制代码
// cs_operator_bitwise_compl.cs
using System;
class MainClass
{
static void Main()
{
int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
foreach (int v in values)
{
Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
}
}
}
输出
~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
您写的程序是否应为
for(int i=0,i <=data.length()-1,i++)
{
if(data[i]==1)
{
data[i]=0;
}
else
{
data[i]=1;
}
}
还有,把数字转换成二进制显示后,如何存入一个数组int[]data
msdn上摘的: ~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的。 备注
用户定义的类型可重载 ~ 运算符。有关更多信息,请参见 operator。在枚举时通常允许整型运算。 示例
复制代码
// cs_operator_bitwise_compl.cs
using System;
class MainClass
{
static void Main()
{
int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
foreach (int v in values)
{
Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
}
}
}
输出
~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
Console.WriteLine(S);
//不足8位补
switch (S.Length)
{
case 1:
S = "0000000" + S;
break;
case 2:
S = "000000" + S;
break;
case 3:
S = "00000" + S;
break;
case 4:
S = "0000" + S;
break;
case 5:
S = "000" + S;
break;
case 6:
S = "00" + S;
break;
case 7:
S = "0" + S;
break;
default:
break;
}
char[] C = S.ToCharArray();
int[] Data = new int[8];
for (int i = 0; i < 8; i++)
{
Data[i] = Convert .ToInt32 (C[i]);
}
for (int i = 0; i < 8; i++)
{
if (Data[i] == 0)
{
Data[i] = 1;
}
else
{
Data[i] = 0;
}
}
S = "";
for (int i = 0; i < 8; i++)
{
S = S + Convert.ToString(Data[i]);
}
Console.WriteLine(S);
Console.ReadLine(); }
namespace aaa
{
class Program
{
static void Main(string[] args)
{
string str ="0110101001";
char [] arrStr=str.ToCharArray();
int [] arrInt =new int [arrStr.Length];
for (int i = 0; i <= arrStr.Length-1; i++)
{
arrInt[i] = (int)arrStr[i] - 48;//(反正减0的ASCLL玛值,网了是好多了)
Console.WriteLine(arrInt[i]);
}
}
}
}