- 1 1. ã¯ããã«
- 2 2. XORïŒæä»çè«çåïŒãšã¯ïŒ
- 3 3. Cèšèªã«ãããXORæŒç®åïŒ^ïŒã®äœ¿ãæ¹
- 4 4. å®è·µçãªã³ãŒãäŸ
- 5 5. XORã®å¿çšäŸ
- 6 6. ããããèª€è§£ãšæ³šæç¹
- 7 7. ãŸãšã
- 8 8. FAQïŒãããã質åïŒ
- 8.1 Q1. XORæŒç®ã¯ã©ããªå Žé¢ã§äœ¿ãã®ã§ããïŒ
- 8.2 Q2. ^ ãš || ã && ã®éããããããŸããã
- 8.3 Q3. x ^ x = 0 ã«ãªãã®ã¯ãªãã§ããïŒ
- 8.4 Q4. XORã¯ç¬Šå·ä»ãæŽæ°ã§ãæ£ãã䜿ããŸããïŒ
- 8.5 Q5. XORæŒç®ã䜿ã£ããã¯ããã¯ã§ãã䜿ããããã®ã¯ãããŸããïŒ
1. ã¯ããã«
CèšèªãåŠç¿ããŠãããšããæä»çè«çåïŒXORïŒããšããèšèã«åºäŒãããšããããŸããç¹ã«ãããæŒç®ãæ±ãå Žé¢ã§ã¯ããã®æä»çè«çåã¯éåžžã«éèŠãªåœ¹å²ãæãããŸãã
ããã°ã©ã ã®äžã§ãããããåãæ¿ããããããŒã¿ãæå·åãããã倿°ã®å€ãå ¥ãæ¿ããããªã©ãå°ãé«åºŠãªæäœãè¡ããããšãã«ãXORæŒç®ã¯åŒ·åãªæŠåšã«ãªããŸããããããåå¿è ã«ãšã£ãŠã¯ãANDæŒç®ããORæŒç®ããšã®éããåããã¥ãããæ··ä¹±ããŠããŸãããšãå°ãªããããŸããã
ãã®ã·ãªãŒãºã§ã¯ãCèšèªã«ãããæä»çè«çåã®ä»çµã¿ãäœ¿ãæ¹ããåå¿è ã«ãåãããããäžå¯§ã«è§£èª¬ããŠãããŸãããã®èšäºã§ã¯ãã®ç¬¬äžæ©ãšããŠããæä»çè«çåãšã¯äœãïŒããçè§£ããCèšèªã«ãããäœ¿ãæ¹ãæ³šæç¹ãããã«ã¯å®çšçãªæŽ»çšäŸãŸã§ãç¶²çŸ çã«ç޹ä»ããŸãã
Cèšèªã®åºç€ãäžéãç¿åŸãããããæŒç®ã®çè§£ãæ·±ããããšèããŠããæ¹ã¯ãã¡ãããã¡ãã£ãšãã工倫ã§ã³ãŒãã®å¹çãé«ããããšããäžçŽè ã«ã圹ç«ã€å 容ã§ããããããã£ããã«ãCèšèªã®æŒç®ã«å¯Ÿããçè§£ãäžå±€æ·±ãŸãããšã§ãããã
2. XORïŒæä»çè«çåïŒãšã¯ïŒ
æä»çè«çåïŒXORïŒeXclusive ORïŒã¯ããããæŒç®ã«ãããåºæ¬çãªè«çæŒç®ã®äžã€ã§ããCèšèªã§ã¯ ^
ïŒãã£ã¬ããèšå·ïŒã䜿ã£ãŠè¡šçŸãããŸããXORã®ç¹åŸŽã¯ããç°ãªããããã§ããã°1ãåããããã§ããã°0ã«ãªãããšããç¹ã«ãããŸãã
XORã®ççå€è¡š
ãŸãã¯ãæä»çè«çåã®åäœã確èªããããã«ãççå€è¡šãèŠãŠã¿ãŸãããã
A | B | A ^ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
ãã®è¡šããåããããã«ãAãšBã®ããããç°ãªããšãã«1ãåãã§ããã°0ãè¿ããŸãããããéåžžã®è«çåïŒORïŒãè«çç©ïŒANDïŒãšã¯ç°ãªãç¹ã§ãã
ä»ã®è«çæŒç®ãšã®æ¯èŒ
XORã¯ä»ã®è«çæŒç®ãšæ¯èŒãããšãå°ããŠããŒã¯ãªæ§è³ªãæã£ãŠããŸãã以äžã«ç°¡åã«éãããŸãšããŸãã
æŒç®å | æå³ | æ¡ä»¶ |
---|---|---|
& | è«çç©ïŒANDïŒ | äž¡æ¹ã1ã®ãšãã ã1 |
| | è«çåïŒORïŒ | å°ãªããšã1ã€ã1ã§ããã°1 |
^ | æä»çè«çå | ç°ãªãå Žåã®ã¿1 |
ANDãORããå ±éæ§ãããå å«ããæ±ãã®ã«å¯ŸããŠãXORã¯ãéããã«æ³šç®ããæŒç®ã§ãããããæå·ããšã©ãŒæ€åºãšãã£ããå·®ç°ã®æ€åºããæ±ããããå Žé¢ã§éå®ãããçç±ã§ãã
æä»çè«çåã®å¯Ÿç§°æ§ãšå¯éæ§
XORã«ã¯ãä»ã®ãããæŒç®ã«ã¯ãªãç¹åŸŽãšããŠãå¯éæ§ïŒå ã«æ»ãããšãã§ããïŒããšããæ§è³ªããããŸãã
ããšãã°ã次ã®ãããªæŒç®ãèããŠã¿ãŸãããã
int a = 5; // 0101
int b = 3; // 0011
int result = a ^ b; // => 0110ïŒ6ïŒ
// ããäžåºŠ b ãš XOR ããã° a ã«æ»ã
int original = result ^ b; // => 0101ïŒ5ïŒ
ãã®ããã«ãa ^ b ^ b
㯠a
ã«æ»ããšããæ§è³ªãæã¡ãŸããããããããŒã¿ã®ã¹ã¯ãããããç°¡ææå·åãã«å¿çšããã倧ããªçç±ã§ãã
3. Cèšèªã«ãããXORæŒç®åïŒ^ïŒã®äœ¿ãæ¹
Cèšèªã§æä»çè«çåïŒXORïŒãæ±ãå Žåã¯ã^
æŒç®åã䜿çšããŸãããã®æŒç®åã¯æŽæ°åå士ã®ãããããšã®æä»çè«çåãèšç®ããéåžžã«ã·ã³ãã«ãªæ§æã§æ±ãããšãã§ããŸãã
åºæ¬çãªæ§æãšäœ¿ãæ¹
XORæŒç®åã®åºæ¬çãªäœ¿ãæ¹ã¯ä»¥äžã®ãšããã§ãã
int a = 10; // 2鲿°ã§ 1010
int b = 6; // 2鲿°ã§ 0110
int result = a ^ b; // 1100 â 12
ãã®å Žåãa
ãš b
ã®åããããæ¯èŒããããããç°ãªãå Žåã¯1ãåãå Žåã¯0ã«ãªããŸããã€ãŸãã10 ^ 6 = 12
ãšããçµæãåŸãããŸãã
å®è¡äŸïŒXORæŒç®ã®åºå確èª
以äžã¯ãç°¡åãªXORæŒç®ã®çµæã確èªããã³ãŒãã§ãã
#include <stdio.h>
int main() {
int a = 10;
int b = 6;
int result = a ^ b;
printf("%d ^ %d = %d
", a, b, result); // çµæ: 10 ^ 6 = 12
return 0;
}
ãã®ã³ãŒããå®è¡ãããšãXORã®èšç®çµæãæšæºåºåã«è¡šç€ºãããŸãã
æŒç®åã®åªå é äœãšæ¬åŒ§ã®äœ¿çš
^
æŒç®åã®åªå
é äœã¯ãå ç®ïŒ+
ïŒãæžç®ïŒ-
ïŒãããäœããæ¯èŒæŒç®åïŒ<
ã>
ãªã©ïŒãããé«ãã§ãããè«çæŒç®åïŒ&&
ã ||
ïŒããã¯é«ããããŸããã
以äžã®ãããªè€éãªåŒã§ã¯ãæç€ºçã«æ¬åŒ§ã䜿ãããšã§æå³ãæç¢ºã«ããŸãããã
int result = (a ^ b) + 5; // XOR ã®çµæã« 5 ãå ç®
æå³ããªãæŒç®é åºãé²ãããã«ããæ¬åŒ§ã䜿ã£ãŠåªå é äœãã¯ã£ãããããã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
泚æç¹ïŒè«çæŒç®åãšã®æ··å
XORã¯ãããåäœã®æŒç®ã§ããã®ã«å¯Ÿãã&&
ã ||
ã¯è«çå€ïŒ0ãŸãã¯1ïŒãæ±ãè«çæŒç®åã§ãã
以äžã®ããã«æ··åãããšãæå³ããªãçµæã«ãªãå¯èœæ§ããããŸãã
int a = 1;
int b = 0;
// æ¬åœã¯è«çåã䜿ãããã®ã«...
if (a ^ b) {
printf("ééããŸãïŒã§ããããæŒç®ïŒ
");
}
ãã®ã³ãŒãã¯äžèŠ if (a || b)
ã®ããã«èŠããŸãããå®éã«ã¯ 1 ^ 0 = 1
ãšãããããæŒç®ãè¡ãããŠãããæå³ãšéãåäœã«ãªãå¯èœæ§ããããŸããæ¡ä»¶åŒã®äžã§ã¯ããããæŒç®åãããè«çæŒç®åã䜿ãã®ãäžè¬çã§ãã
4. å®è·µçãªã³ãŒãäŸ
ããã§ã¯ãCèšèªã«ãããæä»çè«çåïŒXORïŒæŒç®å ^
ã䜿ã£ãå®çšçãªã³ãŒãäŸã玹ä»ããŸããåçŽãªæ°å€æŒç®ããããããæäœãããã«ã¯äžæå€æ°ã䜿ããã«å€ãå
¥ãæ¿ãããã¯ããã¯ãŸã§ãåå¿è
ã§ãããã«è©Šããå
容ãäžå¿ã«æ§æããŠããŸãã
æ°å€ã®XORæŒç®
ãŸãã¯æãåºæ¬çãªäœ¿çšäŸã§ãã2ã€ã®æŽæ°ã«å¯ŸããŠXORæŒç®ãè¡ãããã®çµæã衚瀺ããŸãã
#include <stdio.h>
int main() {
int a = 15; // 1111
int b = 9; // 1001
int result = a ^ b;
printf("a ^ b = %d
", result); // çµæ: 6 (0110)
return 0;
}
ãã®äŸã§ã¯ã15 ^ 9 = 6
ãšããçµæã«ãªããŸãã2鲿°ã§èŠããšåãããã®éããã¯ã£ããããŸãã
ããããã¹ã¯ã䜿ã£ãç¹å®ãããã®å転
XORã¯ãç¹å®ã®ããããå転ãããç®çã«ããã䜿ãããŸããããšãã°ãäžäœç¬¬2ãããã ããå転ããããå Žåã以äžã®ããã«ããŸãã
#include <stdio.h>
int main() {
unsigned int data = 0b00001100; // 12
unsigned int mask = 0b00000010; // 第2ãããã察象
data ^= mask;
printf("çµæ: %u
", data); // çµæ: 14ïŒãŸãã¯10ãããšã®å€ã«ããïŒ
return 0;
}
ãã®ããã«ãXORãããããã¹ã¯ãšçµã¿åãããŠäœ¿ãããšã§ãä»»æã®ããããç°¡åã«ãã°ã«ïŒå転ïŒã§ããŸãã
倿°ã®å€ãäžæå€æ°ãªãã§äº€æãã
XORã®å¯éæ§ã掻ãããšã2ã€ã®æŽæ°ã®å€ãäžæå€æ°ã䜿ããã«å ¥ãæ¿ããããšãã§ããŸãã
#include <stdio.h>
int main() {
int x = 5;
int y = 9;
x = x ^ y;
y = x ^ y;
x = x ^ y;
printf("x = %d, y = %d
", x, y); // x = 9, y = 5
return 0;
}
ããã¯ãXORæŒç®ããåãå€ã§2åXORãåããšå ã«æ»ãããšããæ§è³ªãæã€ããšã掻ããããã¯ããã¯ã§ãã
ãã ããå¯èªæ§ããã°ã®ãªã¹ã¯ãèãããšãçŸä»£ã®Cèšèªã§ã¯äžæå€æ°ãäœ¿ãæ¹ãç¡é£ãšãããå Žé¢ãå€ãã§ãããšã¯ãããã¢ã«ãŽãªãºã ãçè§£ããäžã§ã¯éåžžã«è峿·±ãæ¹æ³ã§ãã
5. XORã®å¿çšäŸ
æä»çè«çåïŒXORïŒã¯ãåãªããããæŒç®ã«ãšã©ãŸããã工倫次第ã§ããŸããŸãªå Žé¢ã«å¿çšã§ããŸããããã§ã¯ãCèšèªã䜿ã£ãŠXORãæŽ»èºããå®çšçãªå¿çšäŸã玹ä»ããŸããç¹ã«ãããŒã¿ã®æå·åãéè€èŠçŽ ã®æ€åºãç«¶æããã°ã©ãã³ã°ã§ã®æŽ»çšã¯ãå®åã«ã圹ç«ã€ç¥èã§ãã
ããŒã¿ã®ç°¡ææå·åãšåŸ©å·å
XORã®å¯éæ§ã¯ãæå·åŠçã«é©ããŠããŸãã以äžã®ããã«ãåãããŒã2å䜿ãããšã§å ã®ããŒã¿ã埩å ããããšãã§ããŸãã
#include <stdio.h>
int main() {
char original = 'A'; // å
ããŒã¿
char key = 0x0F; // æå·ããŒ
char encrypted = original ^ key; // æå·å
char decrypted = encrypted ^ key; // 埩å·å
printf("å
: %c, æå·å: %d, 埩å·: %c
", original, encrypted, decrypted);
return 0;
}
ãã®ããã«ãA ^ key ^ key
ã§å
ã«æ»ãããšã確èªã§ããŸããç°¡æçãªæå·åææ³ã§ããã軜éãªã·ã¹ãã ããã¢çšã®åŠçã§ã¯ä»ã§ã䜿ãããããšããããŸãã
é åå ã®éè€èŠçŽ ã®æ€åº
次ã«ã1ã€ã ãç°ãªãèŠçŽ ãå«ãé åãããã®èŠçŽ ãç¹å®ããæ¹æ³ã§ããäŸãã°ããã¹ãŠã®æ°ã2åãã€ç»å Žããäžã«ã1ã€ã ãçæ¹ãããªãæ°ããããšããŸãã
#include <stdio.h>
int main() {
int nums[] = {2, 3, 5, 3, 2, 5, 7};
int n = sizeof(nums) / sizeof(nums[0]);
int result = 0;
for (int i = 0; i < n; i++) {
result ^= nums[i];
}
printf("1ã€ã ãã®èŠçŽ ã¯: %d
", result); // çµæ: 7
return 0;
}
XORã¯ãa ^ a = 0ããšããæ§è³ªãæã€ããããã¢ã«ãªã£ãèŠçŽ ã¯ãã¹ãŠæã¡æ¶ãåããæ®ã£ã1ã€ã ããæçµçã«çµæãšããŠæ®ããŸããèšç®éO(n)ã远å ã¡ã¢ãªäžèŠãšããå¹çã®è¯ããããã¢ã«ãŽãªãºã ã®åé¡ã§ãé »åºã§ãã
ç«¶æããã°ã©ãã³ã°ã§ã®æŽ»çšäŸ
ç«¶æããã°ã©ãã³ã°ã§ã¯ãXORãããªãããŒãªåé¡ãã¹ããŒãã«è§£ãããã®éµãšãªãããšããããŸããããšãã°ãå€ã®å·®ã远跡ããããã察称æ§ãéæã«åã£ãåŠçããè¡ãå Žé¢ã§ã¯ãXORã®ç¥èãå·®ãã€ããããšã«ãªããŸãã
以äžã®ãããªå Žé¢ã代衚çã§ãïŒ
- ã°ã©ãäžã®ãµã€ã¯ã«æ€åº
- Bit DPïŒããããç¶æ ãšããŠæã€åçèšç»æ³ïŒ
- XORåã«ããç¶æ å€å®ïŒäŸïŒNim ã²ãŒã ãªã©ïŒ
ãããã®çšéã§ã¯ãXORã®æ°åŠçæ§è³ªãçè§£ããŠããããšãåæãšãªããããCèšèªã®ææ³ã ãã§ãªããè«çãæ°ççãªèæ¯ãæŒãããããšãéèŠã§ãã
6. ããããèª€è§£ãšæ³šæç¹
æä»çè«çåïŒXORïŒã¯éåžžã«äŸ¿å©ãªæŒç®åã§ãããç¹æã®åäœããåå¿è ã誀解ãããããã€ã³ããå€ããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãCèšèªã«ãããXORã®äœ¿ãæ¹ã§ç¹ã«æ³šæãã¹ãç¹ãæŽçããŸãã
è«çæŒç®åïŒ&&, ||ïŒãšã®æ··å
XORïŒ^
ïŒãšè«çæŒç®åïŒ&&
, ||
ïŒã¯ããŸã£ããç°ãªãç®çã§äœ¿ãããæŒç®åã§ãããåå¿è
ãééããŠäœ¿ã£ãŠããŸã代衚çãªã±ãŒã¹ã§ãã
æŒç®å | çš®é¡ | 察象 | æå³ |
---|---|---|---|
^ | ãããæŒç®å | åããã | æä»çè«çå |
&& | è«çæŒç®å | çåœå€ | ANDïŒè«çç©ïŒ |
|| | è«çæŒç®å | çåœå€ | ORïŒè«çåïŒ |
誀çšäŸ
int a = 1;
int b = 0;
// æ¬åœã¯è«çåã䜿ãããã®ã«...
if (a ^ b) {
printf("ééããŸãïŒã§ããããæŒç®ïŒ
");
}
ãã®ã³ãŒãã¯äžèŠ if (a || b)
ã®ããã«èŠããŸãããå®éã«ã¯ 1 ^ 0 = 1
ãšãããããæŒç®ãè¡ãããŠãããæå³ãšéãåäœã«ãªãå¯èœæ§ããããŸããæ¡ä»¶åŒã®äžã§ã¯ããããæŒç®åãããè«çæŒç®åã䜿ãã®ãäžè¬çã§ãã
笊å·ä»ãæŽæ°ã§ã®XORæŒç®
ããäžã€ã®æ³šæç¹ã¯ã笊å·ä»ãæŽæ°ïŒint
ãªã©ïŒã«å¯ŸããXORæŒç®ã§ããCèšèªã§ã¯ç¬Šå·ä»ãæŽæ°ããããåäœã§åŠçãããããã笊å·ãããïŒæäžäœãããïŒãXORã®å¯Ÿè±¡ã«ãªããŸãã
äŸïŒè² ã®æ°ã®XORæŒç®
#include <stdio.h>
int main() {
int a = -1;
int b = 1;
int result = a ^ b;
printf("%d
", result); // çµæ: -2ïŒå®è¡ç°å¢ã«ãã£ãŠç°ãªãïŒ
return 0;
}
ãã®ããã«ãäºæ³ãšã¯ç°ãªãçµæãåºãã®ã¯ãCèšèªã§è² ã®æ°ã2ã®è£æ°è¡šçŸã§æ ŒçŽãããŠããããã§ãã
解決ç
笊å·ããããç¡èŠãããå Žåã¯ãæç€ºçã« unsigned int
ã䜿ããŸããããããããããšã§ãããäºæž¬å¯èœãªãããæŒç®ãè¡ããŸãã
unsigned int a = 0xFFFFFFFF;
unsigned int b = 0x00000001;
unsigned int result = a ^ b; // æç¢ºã«ãããæäœãã§ãã
æ¡ä»¶åå²ã«ããã䜿çšã¯æ éã«
^
æŒç®åã¯ã1ã€ã ãçãã®ç¶æ
ãæ€åºããçšéãšããŠãèããããã¡ã§ãããè«ççãªçåœå€ãæ±ãå Žåã«ã¯é¿ããæ¹ãå®å
šã§ããæå³ãèªã¿ããããããã°ãé²ãããã«ããããŒã«å€ã«ã¯ &&
, ||
, !
ã䜿çšããã®ãæšå¥šãããŸãã
7. ãŸãšã
æ¬èšäºã§ã¯ãCèšèªã«ãããæä»çè«çåïŒXORïŒã«ã€ããŠãåºç€ããå¿çšãŸã§ã段éçã«è§£èª¬ããŠããŸãããååŠè ãã€ãŸããããããã€ã³ãããå®åã§ã圹ç«ã€å ·äœçãªæŽ»çšæ¹æ³ã亀ããŠèª¬æããŸããããããã§æ¹ããŠéèŠãªãã€ã³ããæ¯ãè¿ã£ãŠãããŸãããã
æä»çè«çåïŒXORïŒã®èŠç¹
- XORïŒ^ïŒãšã¯ïŒ
ãããããšã«æ¯èŒããŠããç°ãªãå Žåã«1ãåãå Žåã«0ããšãªãæŒç®ãANDãORãšã¯ç°ãªãããéããã«çŠç¹ãåœãŠãæŒç®ã§ããã - Cèšèªã§ã®äœ¿ãæ¹
^
æŒç®åã䜿çšããŠãããåäœã®æä»çè«çåãç°¡æœã«å®è¡ã§ãããæŒç®åã®åªå é äœãæ¬åŒ§ã®äœ¿çšã«æ³šæããããšãéèŠã - å®è·µçãªã³ãŒãäŸ
XORãçšããããšã§ããããã®å転ã倿°ã®äº€æãå¹ççã«è¡ãããçè§£ãæ·±ããããã«ã¯å®éã«ã³ãŒããæžãããšã广çã - å¿çšäŸ
ããŒã¿ã®æå·åã»åŸ©å·åãé åäžã®äžæãªèŠçŽ ã®ç¹å®ãç«¶æããã°ã©ãã³ã°ã§ã®é«éã¢ã«ãŽãªãºã æ§ç¯ãªã©ãå€åœ©ãªåéã§æŽ»çšãããã - 泚æç¹
è«çæŒç®åãšã®æ··åãã笊å·ä»ãæŽæ°ã§ã®XORæŒç®ã«ã¯æ³šæãäžæç¢ºãªæŒç®çµæãé¿ããããã«ããunsigned
åã®äœ¿çšãæ¬åŒ§ã«ããæç€ºãæšå¥šãããã
ä»åŸã®åŠç¿ã«åããŠ
æä»çè«çåã¯ãäžèŠãããšå°å³ã§çè§£ãã«ããååšãããããŸããããããããã®æ§è³ªãæ£ããçè§£ã䜿ãããªããããã«ãªããšãCèšèªã®å¯èœæ§ããã£ãšåºãããŸãã
XORã¯ããããæŒç®å šäœã®äžã§ãç¹ã«å¿çšã®å¹ ãåºããã¢ã«ãŽãªãºã ã®èšèšãäœã¬ãã«ãªæé©åã«é¢å¿ãããæ¹ã«ãšã£ãŠã¯ãéåžžã«åŒ·åãªæŠåšãšãªãã§ãããã
ãã²ãã®èšäºã§åŸãç¥èããèªåã®ã³ãŒãã«åãå ¥ããŠãå®éã«æãåãããŠç¢ºãããŠã¿ãŠãã ãããã·ã³ãã«ãªããå¥¥ã®æ·±ãXORã®äžçãããã£ãšèŠããŠããã¯ãã§ãã
8. FAQïŒãããã質åïŒ
Cèšèªã«ãããæä»çè«çåïŒXORïŒã¯ãæ £ããŠããªããšå°ããšã£ã€ãã«ããéšåããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãåŠç¿è ãçŸå Žã®ãšã³ãžãã¢ããããå¯ãããã質åãšãã®åçããŸãšããŸããã
Q1. XORæŒç®ã¯ã©ããªå Žé¢ã§äœ¿ãã®ã§ããïŒ
A1.
XORæŒç®ã¯ã以äžã®ãããªå Žé¢ã§ãã䜿ãããŸãïŒ
- ããŒã¿ã®ç°¡ææå·åã»åŸ©å·å
- é åããäžæãªèŠçŽ ãæœåºããã¢ã«ãŽãªãºã
- 倿°ã®å€ãäžæå€æ°ãªãã§å ¥ãæ¿ããåŠç
- ãšã©ãŒãã§ãã¯ïŒããªãã£ããããªã©ïŒ
- ããããã¹ã¯ã䜿ã£ããããæäœ
ç¹ã«äœã¬ãã«ãªåŠçããèšç®éãæããããšãã«éåžžã«å¹æçã§ãã
Q2. ^
ãš ||
ã &&
ã®éããããããŸããã
A2.^
ã¯ãããæŒç®åã§ãããåãããããšã«æä»çè«çåãè¡ããŸãã
äžæ¹ã||
ã &&
ã¯è«çæŒç®åã§ãããå
šäœãçãåœããè©äŸ¡ããŸãã
äŸïŒ
int a = 1;
int b = 0;
int x = a ^ b; // çµæ: 1ïŒ1 ^ 0 â 1ïŒ
int y = a || b; // çµæ: 1ïŒa ãŸã㯠b ãçïŒ
çšéãæå³ãç°ãªããããæ··åããªãããã«æ³šæãå¿ èŠã§ãã
Q3. x ^ x = 0
ã«ãªãã®ã¯ãªãã§ããïŒ
A3.
æä»çè«çåã®å®çŸ©ã«åŸãã°ãåããããå士ã¯0ã«ãªããããx ^ x
ã§ã¯ãã¹ãŠã®ãããã0ã«ãªããŸãã
ããã¯XORã®å¯éæ§ã«ãã€ãªãã£ãŠãããæå·åŠçãå€ã®å
¥ãæ¿ããªã©ã«å¿çšãããŸãã
Q4. XORã¯ç¬Šå·ä»ãæŽæ°ã§ãæ£ãã䜿ããŸããïŒ
A4.
䜿ããŸããæ³šæãå¿
èŠã§ãã笊å·ä»ãæŽæ°ïŒäŸïŒint
ïŒã§ã¯ãæäžäœãããã笊å·ã瀺ããããXORã®çµæãè² ã®æ°ã«ãªãå ŽåããããŸãã
笊å·ãèæ
®ããªããããæäœããããå Žåã¯ãunsigned int
ã䜿ãã®ãå®å
šã§ãã
Q5. XORæŒç®ã䜿ã£ããã¯ããã¯ã§ãã䜿ããããã®ã¯ãããŸããïŒ
A5.
ãã䜿ããããã¯ããã¯ãšããŠä»¥äžããããŸãïŒ
a = a ^ b; b = a ^ b; a = a ^ b;
ã«ããå€ã®äº€æ- XORã¹ãã£ã³ã«ããéè€èŠçŽ ã®é€å€
- æå·åãããããŒã¿ã®åŸ©å·åŠçïŒç°¡æçãªXORæå·ïŒ
- ç¶æ ããã°ã«ïŒON/OFFïŒããããããã¹ã¯åŠç
ãã ããå¯èªæ§ãäžããæããããããã䜿çšããå Žé¢ãããŒã å ã®ã³ãŒãã£ã³ã°ã«ãŒã«ã«ã¯é æ ®ãå¿ èŠã§ãã