完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.位操作
#include int main(void) { // 把一个寄存器值的bit4~bit7取反,其他位不变 unsigned int a = 0x123d0c37; unsigned int b = 0xf0; unsigned int c; c = a ^ b; printf("a & b = 0x%x.n", c);//0x123d0cc7. /* // 把一个寄存器值的bit4~bit7置1,其他位不变 unsigned int a = 0x123d0cd7; unsigned int b = 0xf0; unsigned int c; c = a | b; printf("a & b = 0x%x.n", c); */ /* // 把一个寄存器值的bit13~21清0,其他位不变 unsigned int a = 0x123d0c57; unsigned int b = 0xffc01fff; unsigned int c; c = a & b; printf("a & b = 0x%x.n", c); // 0x12000c57. */ } */} 使用宏对变量a的bit n 位进行置位,清0,取反操作 假设有一个整数为x,编写三个将x的二进制位的第n位置1、清零、取反,其他位不变。 #include using namespace std; #define IBS(n) 0x01<<(n-1) void Set_N_To_1(int &x, int n) { x |= IBS(n); } void Clear_N_To_0(int &x, int n) { x &= ~IBS(n); } void Negate_N(int &x, int n) { x ^= IBS(n); } int main() { int x = 10; Set_N_To_1(x, 3); cout< x = 10; Clear_N_To_0(x, 2); cout< x = 10; Negate_N(x, 1); cout< } #include using namespace std; #define Clear_N_To_0(x, n) (x & (~(1 << (n-1)))) #define Set_N_To_1(x, n) (x | (1 << (n-1))) #define Negate_N(x, n) (x ^ (1 << (n-1))) int main() { cout << Clear_N_To_0(10, 2) << endl; cout << Set_N_To_1(10, 3) << endl; cout << Negate_N(10, 1) << endl; return 0; } 注宏定义中的n-1,只是为了更好理解,比如第一位置就是Set_N_To_1(x, 1),从下标1开始计数 2.strcpy() 函数 标准实现 C语言标准库函数 作用:为了生成链式表达式。 /* C语言标准库函数strcpy的一种典型的工业级的最简实现 返回值: 返回目标串的地址。 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。 参数: 目标串 dest 源串 str */ char* strcpy(char* dst, const char* str) { //1.断言 assert(dst != NULL && str != NULL); //2.使用ret指向dst字符串 char* ret = dst; //3.复制 while(*str != ' |