关于衡量计算操作的方法:
当为算法统计操作的数量的时候,所有的C运算符被认为是一样的操作。中间过程不被写入随机存储器(RAM)而不被计算,当然,这种操作数的计算方法,只是作为那些接近机器指令和CPU运行时间的服务。所有的操作被假设成花相同的运行时间,事实上是不正确的。有很多不同的因素决定一个系统能多快运行一段样例代码,例如:缓存大小,内存带宽,指令集合等等……。最后,建立一套标准才是衡量一种方法快过另一种方法的最好方法。
判断一个整数的符号:
int v; // v为我们要判断的整数
int sign; // 保存结果
sign = -(v < 0); // if v < 0 sign= -1, else 0.
//或者为了避免在cpu上判断而使用寄存器
sign = -(int)((unsigned int)((int)v) >> (sizeof(int) * CHAR_BIT - 1)); // CHAR_BIT 是每字节的位数 (通常为 8).
//或者为了减少指令(但不轻便)
sign = v >> (sizeof(int) * CHAR_BIT - 1);
测试代码: