내가 15를 c라고 가정 해 보겠습니다. c는 a = 7 및 b = 13으로 분할 될 수 있습니다. a | b = c. 나는 c를 입력으로 주어 a와 b의 가능한 조합을 찾을 수있는 함수를 작성하려고합니다.역순으로 '|' Bitshift 또는
class Program
{
static void Main(string[] args)
{
int data = 560;
int[] v = FindBitshiftOr(data);
Console.WriteLine("{0} << {1} = {2}", v[0], v[1], v[0] | v[1]);
Console.ReadKey();
}
private static Random r = new Random();
private static int[] FindBitshiftOr(int value)
{
int[] d = new int[2];
int a = r.Next(0, value);
int c = r.Next(0, value);
int b = ~a;
d[0] = a;
d[1] = b | c;
return d;
}
}
이것은 내 시도 였지만 항상 -1을 반환하고 누군가 내게 무엇이 잘못되었는지 설명 할 수 있습니까?
배열이 될 수 없습니다 (''[] INT) "항상 -1"... 당신은 명확하게 될까요 동일해야? –
당신은'c'에있는 모든 비트를 알고 있습니다. 그래서 대답은 그 비트의 모든 조합입니다. 그러나 일반적으로 "역"비트 OR을 수행하는 것은 불가능합니다. 예를 들어 단일 비트 세트 이상이있는 경우 여러 조합이 있고 단일 "올바른"솔루션이없는 것처럼 말입니다. –
그건 내가 v [0] | v [1] = -1 –