Boolean
작업을해야 할
B1=00 10 11 01 00
B2=00 10 11 01
B1 NOR B2 =11 11 11 11
어떻게 자바에서 가능하다? 아무도 도와 줄 수 있니?
죄송 합니다만, Java에서 항상 비트없이 현제 NOR 연산을 수행 할 수 있습니까?
Boolean
작업을해야 할
B1=00 10 11 01 00
B2=00 10 11 01
B1 NOR B2 =11 11 11 11
어떻게 자바에서 가능하다? 아무도 도와 줄 수 있니?
죄송 합니다만, Java에서 항상 비트없이 현제 NOR 연산을 수행 할 수 있습니까?
왜, 표현은 다음과 같습니다
~(b1 | b2)
더 많은 정보 Bitwise and Bit Shift Operators를 참조하십시오.
그러나 예제에서 변수의 길이는 다릅니다. 결과는 NOR에 해당하지 않습니다.
업데이트 :
BitSet b1 = new BitSet();
// Fill it with booleans:
for (int i = 0 ; i < myBooleans.length ; i++)
b1.set(i, myBooleans[i]);
// Or fill it with bytes:
BitSet b1 = BitSet.valueOf(myBytes);
// Or fill it with 0/1 from a string:
for (int i = 0 ; i < myString.length() ; i++)
b1.set(i, myString.charAt(i) == "1");
BitSet b2 = new BitSet();
// Same as above
BitSet result = new BitSet();
result.or(b1); // Copies b1
result.or(b2); // Makes the OR
result.flip(0,result.size()); // Negates - the result is a NOR
result.clear(Math.min(b1.size(), b2.size()), result.size()); // Only retain the common size
경우 : 당신이 논리 값의 두 시퀀스, 아니 같은 크기를 가지고 있고, 단지 (왼쪽에서 오른쪽으로) 그것의 일부를 필요로하는 경우, 나는 BitSet
사용하는 것이 좋습니다 것 당신은 실제로 int
을 사용하기를 원한다면 오른쪽에서 왼쪽으로 표현하는 것이 더 낫습니다. 즉, 첫 번째 비트는 b % 2
이고 두 번째 비트는 b/2 % 2
입니다. 그런 다음 시작 부분에서 설명한대로 NOR를 수행하면됩니다. 필요한 경우 결과.
왼쪽에서 오른쪽으로 표현하면 0으로 채워져 있지 않으면 (예 : B1=0010 1101 0000 0000 0000 0000 0000 0000
, B2=0010 1101 0000 0000 0000 0000 0000 0000
) 교대가 필요할 것입니다 (또는 곱셈/나눗셈은 본질적으로 똑같은 것이지만 더 비싸지 만 ...). 이 경우 정상적으로 작업을 수행 할 수 있습니다. B2와
그냥 "아니다"또는 "아닙니다"이므로 그냥 비트 또는 반전하십시오.
B1 nor B2 = ~(B1|B2);
귀하의 예는하지만 나에게 이해가되지 않습니다. b1
및 b2
이 (INT) 변수 인 경우 (2'b11 NOR 2'b11) = 2'b11?
배타적 B1 후 "없습니다"결과 : |`다음 비트 NOT`~`
B1 xnor B2 = ~(B1^B2)
고마워.하지만 불평등 비트가 잘못된 결과를 준다. 왜냐하면 왼쪽에서 XNOR 연산을하고 있기 때문입니다. – Arpssss
는 비트 단위 또는'마십시오. – twain249
B1과 B2는 어떻게 얻습니까? '바이트'? '비트 []'? '정수 []'? 'char []'? –
XNOR을 요청하지 않으시겠습니까? b1 xnor b2는 귀하의 예를 바탕으로 11 11 11 11입니다 ... – Tung