Tôi mới sử dụng C # và không thể tìm thấy toán tử XNOR để cung cấp bảng chân lý này:
aba XNOR b ---------------- TTT TFF FTF FFT
Có một nhà điều hành cụ thể cho việc này? Hoặc tôi cần sử dụng! (A ^ B)?
Tôi mới sử dụng C # và không thể tìm thấy toán tử XNOR để cung cấp bảng chân lý này:
aba XNOR b ---------------- TTT TFF FTF FFT
Có một nhà điều hành cụ thể cho việc này? Hoặc tôi cần sử dụng! (A ^ B)?
Câu trả lời:
XNOR đơn giản là bình đẳng trên booleans; sử dụngA == B
.
Đây là một điều dễ bỏ lỡ, vì sự bình đẳng không được áp dụng phổ biến cho booleans. Và có những ngôn ngữ mà nó sẽ không nhất thiết phải làm việc. Ví dụ, trong C, mọi giá trị vô hướng khác không được coi là đúng, vì vậy hai giá trị "đúng" có thể không bằng nhau. Nhưng câu hỏi đã được gắn thẻc #, trong đó, chúng ta sẽ nói, booleans cư xử tốt.
Cũng lưu ý rằng điều này không khái quát cho các hoạt động theo bit, nơi bạn muốn 0x1234 XNOR 0x5678 == 0xFFFFBBB3
(giả sử 32 bit). Đối với điều đó, bạn cần xây dựng từ các hoạt động khác, như ~(A^B)
. (Lưu ý : ~
, không !
.)
!
toán tử có thể được sử dụng để chuyển đổi int
các booleans "hoạt động tốt" : !a==!b
.
!!
(đó là hai toán tử "không" logic) bình thường hóa mọi giá trị vô hướng thành 0
hoặc 1
.
XOR = A hoặc B, nhưng không phải A & B hoặc không (Không thể bằng [! =])
XNOR do đó là oppoiste chính xác và có thể dễ dàng được biểu thị bằng == hoặc ===.
Tuy nhiên, các trường hợp không phải là boolean có vấn đề, như trong ví dụ này:
a = 5
b = 1
if (a == b){
...
}
thay vào đó, sử dụng cái này:
a = 5
b = 1
if((a && b) || (!a && !b)){
...
}
hoặc là
if(!(a || b) && (a && b)){
...
}
ví dụ đầu tiên sẽ trả về false (5! = 1), nhưng ví dụ thứ hai sẽ trả về giá trị true (a [value?] và b [value?] trả về cùng boolean, true (value = not 0 / có một giá trị )
ví dụ alt chỉ là cổng đảo ngược (a || b) &&! (a && b) (XOR)
Không, bạn cần sử dụng !(A^B)
Mặc dù tôi cho rằng bạn có thể sử dụng quá tải toán tử để tạo XNOR của riêng bạn.
Bạn có thể sử dụng ===
toán tử cho XNOR. Chỉ cần bạn cần chuyển đổi a
và b
bool.
if (!!a === !!b) {...}
===
nhà điều hành
===
toán tử không ép buộc là javascript và double!!
trước một giá trị trong đánh giá không hợp lệ trong c #
==
với các toán hạng boolean ...