在数组中设置字节的LSB

时间:2016-11-03 04:36:43

标签: c# bit-manipulation bitwise-operators

我有2个字节数组:ary_aary_b,两者大小相同。

我想设置ary_a中每个字节的LSB与ary_b中每个字节的LSB相同。例如:

数组中的第一个字节:

ary_a[0] = 10110110
ary_b[0] = 00101011
//then ary_a[0] will be:
ary_a[0] = 10110111

第二个字节:

ary_a[1] = 10110111
ary_b[1] = 00101011
//then ary_a[1] will be:
ary_a[1] = 10110111 //does not change 

第三

ary_a[2] = 10110111
ary_b[2] = 00101010
//then ary_a[2] will be:
ary_a[2] = 10110110

等等..

2 个答案:

答案 0 :(得分:1)

尝试以下代码

Parallel.Invoke(
        () =>
            {
               Console.WriteLine("Begin first task...");
            },  // close first Action

        async () =>
              {
                  Console.WriteLine("Begin second task...");
                  while (true)
                        {

                         // HERE you are the code you need to be executed in infinite loop

                          await Task.Delay(60000);
                         }
              }, //close second Action

        () =>
            {
                Console.WriteLine("Begin third task...");
            } //close third Action
        ); //close parallel.invoke

        Console.WriteLine("Returned from Parallel.Invoke");

输出:

var ary_a = new byte[]
{
    182, //1011 0110
    183, //1011 0111
    183  //1011 0111
};

var ary_b = new byte[]
{
    43,  //0010 1011
    43,  //0010 1011
    42   //0010 1010
};

for(var i = 0; i<3; i++)
{
    ary_a[i] = (byte)((ary_a[i] & ~1)|(ary_b[i] & 1));

    // print output
    Console.WriteLine(Convert.ToString(ary_a[i], 2).PadLeft(8, '0'));
}

小提琴:https://dotnetfiddle.net/0xQ342

答案 1 :(得分:0)

employers

首先从每个字节数组索引中获取最低有效位,然后根据其值0或1设置id。 如果你用1做OR,你将得到最后一位 如果你和〜一起,你将得到最后一位未设置。 如果你用1做AND,那么你将获得最低有效位。 这个解决方案适用于signed int,所以你可以想到基于相同逻辑的unsigned int解决方案。