C 语言常用方法技巧语言常用方法技巧
C语言常用方法技巧语言常用方法技巧
除法向上取整除法向上取整
#define DIV_ROUND_UP(n, d) (((n)+(d)-1) / (d))
大端小端选择大端小端选择
low-endian or high-endian
typedef union {
short W; /* Word access */
struct { /* Byte access */
#ifdef LOW_ENDIAN
byte low, high; /* in low-endian arch */
#else
byte high, low; /* in high-endian arch */
#endif
} B;
} word;
求余数运算求余数运算
a = a % 8;
=>
a = a & 7;
说明:位运算只需一个指令周期;取余通常需要调用子程序。
平方运算平方运算
a = pow(a, 2.0);
=>
a = a * a;
说明:内置乘法运算器的处理器中,乘法运算比求平方运算更快;即使没有内置乘法运算器,乘法运算的子程序也比平方运算
子程序效率高。
移位实现乘除法运算移位实现乘除法运算
a = a * 4;
b = b / 4;
=>
a = a << 2;
b = b >> 2;
说明:通常乘以或者除以2n,可使用移位方法代替。
a = a * 9;
=>
a = (a << 3) + a;
while 循环和循环和 do…while 循环循环
说明:do…while 循环编译后生成的代码长度短于 while 循环。
重定义类型,扩展移植性重定义类型,扩展移植性
typedef unsigned char boolean; /* Boolean value type. */
typedef unsigned long int uint32; /* Unsigned 32 bit value */
typedef unsigned short uint16; /* Unsigned 16 bit value */
typedef unsigned char uint8; /* Unsigned 8 bit value */
typedef signed long int int32; /* Signed 32 bit value */
typedef signed short int16; /* Signed 16 bit value */
typedef signed char int8; /* Signed 8 bit value */
得到指定地址上的一个字节或字得到指定地址上的一个字节或字