关于二进制位操作的问题  
作  者:  ip928 (赵晓骏)        Blog   加为好友  
等  级:    
信 誉 值:  100  
所属社区:  .NET技术 C#  
问题点数:  20  
回复次数:  6  
发表时间:  2006-4-24 14:55:24  
   
 
   00101001
怎样获得前4位
第五位
和最后三位?
能不能写出解决方案  
  copico(苦涩) ( ) 信誉:100    Blog   加为好友  2006-4-24 15:06:53  得分: 2  
 
 
   
string data ="00101001";
int []t=new int[8];
char []c=new char[8];
c=data.ToCharArray();
for(int i=0;i<8;i++)
{
t[i]=System.Convert.ToInt32(c[i]);
}  
 
Top  
 ip928(赵晓骏) ( ) 信誉:100    Blog   加为好友  2006-4-24 15:30:17  得分: 0  
 
 
   
00101001是一个字节,不是一个字符串
找到解决方法了。
(byte)(b>>4)前4位((byte)(b<<4))>>7第五位
((byte)(b<<5))>>5最后3位  
 
Top  
 viena() ( ) 信誉:100    Blog   加为好友  2006-4-24 15:35:56  得分: 3  
 
 
   
与  
 
Top  
 soaringbird() ( ) 信誉:100    Blog   加为好友  2006-4-24 15:36:49  得分: 8  
 
 
   
byte b = 41;//00101001
            byte f1_4 = (byte)(b >> 4);
            Console.WriteLine(f1_4);
            byte f5 = (byte)((byte)(b << 4) >> 7);
            Console.WriteLine(f5);
            byte f6_8 = (byte)((byte)(b << 5) >> 5);
            Console.WriteLine(f6_8);
            f6_8 = (byte)(b & Convert.ToByte("00000111", 2));
            Console.WriteLine(f6_8);  
 
Top  
 viena() ( ) 信誉:100    Blog   加为好友  2006-4-24 15:39:00  得分: 7  
 
 
   
//怎样获得前4位
 & 11110000//第五位
 & 00001000
//和最后三位?
& 00000111  
 
Top  
 ip928(赵晓骏) ( ) 信誉:100    Blog   加为好友  2006-4-24 15:54:51  得分: 0  
 
 
   
都是高手  
 
Top  

解决方案 »

  1.   

    string strA = string.Empty;
    string strB = string.Empty;
    string strC = string.Empty;
    string strD = string.Empty;
    for (int i = 0; i < 200; i++)
    {
    strA += '1';
    strB += '0';
    }
    for (int i = 0; i < 200; i++)
    {
    strC += Convert.ToChar((Convert.ToByte(strA[i]) & Convert.ToByte(strB[i])));
    strD += Convert.ToChar((Convert.ToByte(strA[i]) | Convert.ToByte(strB[i])));
    }
    System.Console.Write("与操作结果:" + strC);
    System.Console.Write("或操作结果:" + strC);