gpt4 book ai didi

c - 分析 "technique"用于交换 2 个变量而没有第三个临时变量

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:34 26 4
gpt4 key购买 nike

<分区>

我遇到了一种交换 2 个变量(整数、字符或指针)的“技术”没有第三个临时变量,如下所示:

int a = Something ;  
int b = SomethingElse ;
a ^= b ;
b ^= a ;
a ^= b ;

正常的方式是:

int a = Something ;  
int b = SomethingElse ;
int temp = a ;
a = b ;
b = temp ;

这一切都很好,但是分享这种“技术”的人通常将其描述为不使用额外空间

(A) 没有多余的空间是真的吗?我认为,与“内存到内存异或运算”相比,“内存到内存复制”需要的指令(机器代码)更少。

int temp = a <==> move content of memory location a to memory location temp **(1 instruction)**, possibly via a register **(2 instructions)**

a ^= b <==> move contents of memory location a to register1, move contents of memory location b to register2, xor register1 and register2 (store results in register1) , move register1 to memory location a **(about 4 instructions)**

似乎“技术”会导致更长的代码和更长的运行时间。

(B)“技术”在某些方面或某些情况下是否更快(或更好)?

似乎“技术”更慢,使用更多内存,并且不太适合 float 。

编辑:
似乎可能有一些潜在的重复:
Why don't people use xor swaps?

但是这个问题明显不同:
(A) 该问题被关闭为“非建设性”,它“可能会引发辩论、争论、投票或扩展讨论”,而该问题正在寻找事实引用,例如“是真的吗?” &“这样更好吗?”
(B) 这个问题是关于为什么不使用“技术”,而这个问题是关于对“技术”的分析,而不是看人们为什么使用它或不使用它。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com