求大规模计算负数的方法!
本帖最后由 zhouxicai 于 2013-01-23 21:36:19 编辑
int x = 3;
x = -x;
struct count
{
int x1;
int x2;
int x3;
int x4;
int x5;
int x6;
}
大规模计算负数,有没有更好的实现方法?如果一个结构体中有很多变量,求他们的负数,有什么好办法?用循环?
[解决办法]
用循环是个好办法。循环执行起来速度很快。
如果变量不想用数组,也可以这样(但不推荐)
count c;
int* p = (int*)&c
for (int i = 0; i < 6; ++i, ++p)
{
*p = -*p;
}
[解决办法]
都是整数的话 直接操作内存就是
[解决办法]
我在沙发附的那段就是啊。
[解决办法]
struct中加函数吧
[解决办法]
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
#include <stdio.h>
#include <memory.h>
struct count {
int x1;
int x2;
int x3;
int x4;
int x5;
int x6;
} c,*p;
int main() {
p=&c;
__asm {
push ecx
push edi
mov eax,3
mov ecx,6
mov edi,p
rep stosd
pop edi
pop ecx
}
printf("%d,%d,%d,%d,%d,%d\n",c.x1,c.x2,c.x3,c.x4,c.x5,c.x6);
__asm {
push ecx
push edi
push esi
mov esi,p
mov edi,esi
mov ecx,6
next:
lodsd
neg eax
stosd
loop next
pop esi
pop edi
pop ecx
}
printf("%d,%d,%d,%d,%d,%d\n",c.x1,c.x2,c.x3,c.x4,c.x5,c.x6);
return 0;
}
//3,3,3,3,3,3
//-3,-3,-3,-3,-3,-3