三星设备刷机终极指南:Bifrost跨平台固件下载工具完整解析
2026/6/5 17:22:49
A 整数的除法
7/2B 浮点型的除法
7.0/2 7/2.0 7.0/2.0int a = 7 % 2; //输出1 //%的前后必须为整数移位操作符的操作数只能是整数。移位的是二进制数。
整数的二进制有三种:源码、补码、反码。正的整数原码、补码、反码相同;负的整数原码、补码、反码要计算。整数在内存中存储的是补码。
//7 //00000000000000000000000000000111-原码 //00000000000000000000000000000111-反码 //00000000000000000000000000000111-补码 //-7 //10000000000000000000000000000111-源码 //11111111111111111111111111111000-反码 //11111111111111111111111111111001-补码(反码+1)正数左移
int main() { int a = 7; int b = a << 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //14 return 0; }负数左移
int main() { int a = -7; int b = a << 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //-14 return 0; }算数移位:右边丢弃,左边补原符号位。
逻辑移位:右边丢弃,左边补0。
正数右移
int main() { int a = 7; int b = a >> 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //3 return 0; }负数右移(VS编译器使用算数右移)
int main() { int a = -7; int b = a >> 1; printf("a=%d\n", a); //-7 printf("b=%d\n", b); //-4 return 0; }整数的二进制数各位上两者都是1的,按位与后的补码也是1,其他是0
int main() { int a = 3; int b = -5; int c = a & b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //00000000000000000000000000000011 printf("c=%d\n", c); //3 return 0; }整数的二进制数各位上只要出现1的,按位或后的补码是1,其他是0
int main() { int a = 3; int b = -5; int c = a | b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //11111111111111111111111111111011 printf("c=%d\n", c); //-5 return 0; }整数的二进制数各位上,相同的是0,不同的是1
int main() { int a = 3; int b = -5; int c = a ^ b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //11111111111111111111111111111000 printf("c=%d\n", c); //-8 return 0; }不使用临时变量,实现两个整数的交换。
方法一:使用按位与、按位或。
int main() { int a = 3; int b = -5; printf("c1=%d\n", a & b); //3 printf("c2=%d\n", a | b); //-5 return 0; }方法二:使用按位异或
int main() { int a = 3; int b = 5; a = a ^ b; //a=3^5 b = a ^ b; //b=3^5^5 —> b=3 a = a ^ b; //a=3^5^3 —> a=5 return 0; }=、+=、-=、&=、|=、^=、>>=、<<=
int main() { int a = 0;//初始化 int b = 0; b = 20;//赋值 a = a + 5; a += 5; a = a >> 1; a >>= 1; a = a - 1; a -= 1; return 0; }int main() { int flag = 3; if (!flag) printf("hehe\n"); else printf("xixi\n"); //输出xixi return 0; }int a = -1;int a = +1;int a = 3; int* p = &a;int a = 10; int n = sizeof(a);int a = 0; printf("*d\n", ~a); //输出-1int main() { int a = 3; int b = ++a;//前置++,先++,后使用 printf("%d\n", a);//输出4 printf("%d\n", b);//输出4 }int main() { int a = 3; int b = a++;//后置++,先使用,后++ printf("%d\n", a);//输出4 printf("%d\n", b);//输出3 }int a = 10; int* p = &a; *p = 20;int a = (int) 3.14;srand((unsigned int)time(NULL)); //time()函数的返回值类型为time_t>、>=、<、<=、!=、==
两个条件都要满足才为真。
两个条件满足一个就为真。
int main() { int a = 3; int b = 0; int c = a && b; //并且 int l = a || b; //或者 printf("c=%d\n", c); //输出0 printf("l=%d\n", l); //输出1 return 0; }if (a > 5) b = 3; else b = -3; (a > 5) ? (b = 3) : (b = -3);int a = 1; int b = 2; int c = (a > b, a = b + 10, a, b = a + 1); printf("%d\n", c); //输出13