草庐IT

关于 c:Swapping 2 Bytes of Integer

Swapping2BytesofInteger我有一个接收3个参数的方法:intx、intn和intm。它返回一个int,其中x的第n个和第m个字节已交换x只是一个普通整数,设置为任何值。n和m是0到3之间的整数。例如,设x的十六进制表示为0x12345678,n为0,m为2。最后一个和倒数第三个字节应该被交换(n=78,m=34)。我已经弄清楚如何从x中提取第n个和第m个字节,但我不知道如何将所有4个字节重新组合成该方法应该返回的整数。这是我当前的代码:`1234567891011121314intbyteSwap(intx,intn,intm){  //Initializevariable

关于 c:Swapping 2 Bytes of Integer

Swapping2BytesofInteger我有一个接收3个参数的方法:intx、intn和intm。它返回一个int,其中x的第n个和第m个字节已交换x只是一个普通整数,设置为任何值。n和m是0到3之间的整数。例如,设x的十六进制表示为0x12345678,n为0,m为2。最后一个和倒数第三个字节应该被交换(n=78,m=34)。我已经弄清楚如何从x中提取第n个和第m个字节,但我不知道如何将所有4个字节重新组合成该方法应该返回的整数。这是我当前的代码:`1234567891011121314intbyteSwap(intx,intn,intm){  //Initializevariable

C 关于使用异或运算交换两数的值

异或运算可以达到交换两数的目的,代码如下:voidswap(int&a,int&b){a=a^b;b=a^b;a=a^b;}但不推荐使用这种方式,附上常用的临时变量方法对比说明。临时变量方法:voidswap(int&a,int&b){inttmp=a;a=b;b=tmp;}对于临时变量法,每次赋值只要读取一个变量的值到寄存器,然后再从寄存器写回到另一个变量中即可,前后涉及两次内存写入操作;但是对于异或运算操作,每次都需要读取两个数据到寄存器中,再进行运算操作,之后把结果写回到变量中,前后共需要三次内存写入操作。另外一点,异或操作的代码可读性差。如果使用C语言实现上述两种方法,并用gcc编译器

C 关于使用异或运算交换两数的值

异或运算可以达到交换两数的目的,代码如下:voidswap(int&a,int&b){a=a^b;b=a^b;a=a^b;}但不推荐使用这种方式,附上常用的临时变量方法对比说明。临时变量方法:voidswap(int&a,int&b){inttmp=a;a=b;b=tmp;}对于临时变量法,每次赋值只要读取一个变量的值到寄存器,然后再从寄存器写回到另一个变量中即可,前后涉及两次内存写入操作;但是对于异或运算操作,每次都需要读取两个数据到寄存器中,再进行运算操作,之后把结果写回到变量中,前后共需要三次内存写入操作。另外一点,异或操作的代码可读性差。如果使用C语言实现上述两种方法,并用gcc编译器