深圳网站建设软件开发公司,购物网站开发代码,wordpress kratos主题,深圳宝安区区号目录
1. 两个数不同的二进制位个数 2.原码、反码、补码
3.不创建临时变量实现两个数的交换
4.求一个整数存储在内存中的二进制中1的个数
5. 特例-1
6.将指定的位置置1 7.将指定位置置1
8.a与a
9.||与
10.逗号表达式
11.srand与rand
12.sizeof 13.结构体初始…目录
1. 两个数不同的二进制位个数 2.原码、反码、补码
3.不创建临时变量实现两个数的交换
4.求一个整数存储在内存中的二进制中1的个数
5. 特例-1
6.将指定的位置置1 7.将指定位置置1
8.a与a
9.||与
10.逗号表达式
11.srand与rand
12.sizeof 13.结构体初始化 14.枚举初始化与赋值 1. 两个数不同的二进制位个数
#includestdio.h
int main()
{int a 2022;int b 1028;int c a ^ b;int count 0;while (c){c c (c - 1);count;}printf(%d\n, count);return 0;
} 2.原码、反码、补码
int main()
{/*首先写出两个数的补码再按位与再求出它的原码按规定打印出来*/int a 3;int b -5;//00000000 00000000 00000000 00000011 -- 原码、反码、补码一样//10000000 00000000 00000000 00000101 -- 原码//11111111 11111111 11111111 11111010 -- 取反//11111111 11111111 11111111 11111011 -- 加1得补码//00000000 00000000 00000000 00000011 -- 3和-5的补码按位相与int c a b;printf(%d\n, c);//相与的结果以%d的形式打印即打印一个有符号的整数//我们求出的是3和-5的补码按位与的结果存在了c里面//但我们需要打印它的原码//而c最高位是0是正数原码补码反码都一样故打印3return 0;
} 首先写出两个数的补码再按位与再求出它的原码按规定打印出来 printf(%d\n, c);//相与的结果以%d的形式打印即打印一个有符号的整数 //我们求出的是3和-5的补码按位与的结果存在了c里面 //但我们需要打印它的原码 //而c最高位是0是正数原码补码反码都一样故打印3
3.不创建临时变量实现两个数的交换 容易溢出 int a 3;//0000 0011int b 5;//0000 0101a a b;//a 8b a - b;//b 3a a - b;//a 5 采用异或 0^a a;相同为0不同为10000 0000 0000 00000000 0101 0111 1011 -- a0000 0101 0111 1011 -- a/*本来是0的还是0本来是1的还是1*/a^a 0;相同为0那么a^a^b b异或支持交换律a^(a^b) bb^(a^b) a那么b^b^a a0000 0110 -- a a^b0000 0101 -- b 0000 0011 -- b b^a0000 0110 -- a0000 0101 -- a a^ba a ^ b;//a 3^5b b ^ a;//b 5^3^5 3a a ^ b;//a 3^5^3 5
4.求一个整数存储在内存中的二进制中1的个数 int a 31;int i 0;int count 0;for (i 0; i 32; i){if (((a i) 1) 1){count;}}printf(%d\n, count);5. 特例-1 int b 0;printf(%d\n, ~b);//-1
规定了1111 1111 1111 1111 11111 1111 1111 1111为-1
6.将指定的位置置1 //改变任意位int a 5;//0000 0101//0000 0010//0000 0111 -- 7a | (1 1);
以改变第1位为例 因为按位或又一个规律1|x 1;0|x x那么与1相或如果是1还是1如果是0还是1 7.将指定位置置1
a ~(1 1);
8.a与a int main(){int c 3;int d c;printf(%d %d\n, c, d);int m 5;int n m;printf(%d %d\n, m, n);int x 10;printf(%d, x--);//先打印再--printf(\n);printf(%d, x);/*printf(\n);printf(%d, --x);*/return 0;} int x 10;printf(%d, x--);//先打印再--printf(\n);printf(%d, x);
9.||与 int i 0, a 1, b 2, c 3, d 4;i a || b || d;因为a 1先赋值给i,a 1为真故不会对b和d进行计算还是原本的值之后a进行自增故打印的是2234printf(%d\n, i);printf(%d %d %d %d, a, b, c, d);int i 0, a 0, b 2, c 3, d 4;i a || b || d;0为假故会计算b,b先自增变成3为真后面不计算int j (a || b || d);printf(%d\n, i);//1printf( %d\n, j);//1printf(%d %d %d %d, a, b, c, d);//1334
10.逗号表达式
逗号表达式整个表达式的结果是最后一个表达式的结果
int main()
{
int a 1;
int b 2;
int c (a b, a b 10, a, b a 1);
printf(%d\n, c);//13
printf(%d %d\n, a ,b);
}
11.srand与rand
#includestdlib.h
#includetime.hint main()
{int i 10;int j 0;/*不加这句话每次都是打印相同的随机数*///srand((unsigned int)time(NULL));while (i--){j (int)rand();printf(%d\n, j);}return 0;
}
12.sizeof 13.结构体初始化 typedef struct student {int grade;char name[10];int telenum[12];char age;char sex[10];}student;int main(){student Stu { 1, };//这种初始化就是让第一个成员变量特殊赋值return 0;} 14.枚举初始化与赋值
#define voice_max 100
typedef enum { DG, DN, UDG 10, UDN } test; 注意test就是我这里给这个枚举类型自定义的一个新的类型名类似与intfloat等。
int main()
{//注意test就是我这里给这个枚举类型自定义的一个新的类型名类似与intfloat等。test b;//b 2 // 注意此处虽然是对枚举变量赋值赋的范围虽然也在枚举值范围内但这是错的因为你不能用数字直接对其进行赋值。 // b (test)2; // 这样就可以了加一个枚举类型的强制转换即可。//test b;b UDG; //b是一个枚举变量而UDG是一个枚举值常量这样赋值就是正确的printf(%d, b);printf(%d, b);return 0;
}