如何把一个字节的高位改变。。比如如果是1的话那么改成零。。
我也没有多少分了。。只能给10分了

解决方案 »

  1.   

    先temp=convert.toint("原字节",16);转换
    再string = convert.tostring(temp,2)l;
    再string.replace();
    再convert转换回去
      

  2.   

    byte b;
    b = (b << 4) | (bb >> 4);
    ?
      

  3.   

    byte b;
    b = b & 15;
      

  4.   

    antoniusguo(anton) ,你的答案不对
    低4位与,只能取低4位,高位得0,但楼主要求高位改变,如果是0,得1
      

  5.   

    举例:
    int a;
    int b=2147483648;
    a = (a + b + b) % (b + b) - b;
    但只限于long  int  short  byte  uint ulong等整数形
      

  6.   

    建议antoniusguo(anton)去参加辩论赛,不得不佩服~
      

  7.   

    // 这个是原来的字节,一共有8位
    byte b = 0x0;// 现在把其中一位更改,比如要更改第3位为1
    int c = 32;  // 32就是00100000
    b = (byte)(((int)b)|c); // 这里利用逻辑或运算|,来更改值为1// 现在把第三位更改回0
    c = 223; // 223就是11011111
    b = (byte)(((int)b)&c); // 这里利用逻辑与运算&,来更改值为0
      

  8.   

    楼主意思是取反。对某一位取反的话,写一个方法来做byte BitReverse(byte b, ushort position)
    {
    int c = 128;
    for (int i=1;i<position;i++)
    {
    c = c/2;
    }
    // 先把位数改为1,如果数值变化,则说明取反成功,如果数值没有变化,则改为0
    byte temp = (byte)(((int)b)|c);
    if (temp.Equals(b))
    {
    c = 255 - c;
    temp = (byte)(((int)b)&c);
    }
    return temp;
    }
      

  9.   

    如果只是要求前4位取反
    byte ReverseHigh(byte b)
    {
    int d = (int)b; // 转化整数
    int h = ~(d>>4); // 高位取反
    b = (byte)((d&15) + (h<<4)); // d&15是将高位全部置0,然后将h变高位,加起来
    return b;
    }
      

  10.   

    呵呵,楼主说话了jackcong() ( ) 信誉:100  2007-08-13 14:58:17
    不好意思啊。。我可能是我没说明白我的意思是 如果是 0 的话改为 1 反之如果是1的话那么改为 0楼主我前面回复你的是满足你的要求的
    byte1 ^ 240
    就是对byte1高4位取反,其中240二进制是11110000
      

  11.   

    ”ezhuyin(碧海蓝天) “ 真是强人呀。。以后还请你多多指教您目前在哪里高就啊。。
    也感谢 “viena() 维也纳(windows7) ” 您的意思很正确。。谢谢
      

  12.   

    再写简单一些byte ReverseHigh(byte b)
    {
    int i = (int)b;
    // 直接高位取反,240就是11110000,这里会将低位全部置0,得到高位
    // 15的二进制为00001111,d&15是将高位全部置0,取低位
    b = (byte)((~i&240) + (i & 15)); 
    return b;
    }
      

  13.   

    我晕,ezhuyin(碧海蓝天)知不知道有种运算叫异或?