首页 > 代码库 > Class 1 -- 知识点串讲

Class 1 -- 知识点串讲

  • int类型的取值范围:-2147483648 - 2147483647,上界是2*109,超出会循环(变负号);
  • 浮点数比大小:

(int)a=1   (实际上)a=1.00001

     b=1           b=0.99999

然而比大小时的精度不需要那么高,也就是说可以忽略极小的误差。这是我们需要设置eps(ε)。一般是保留的位数+3:比如,保留三位小数,eps=1e-6然而注意不要越界:double eps=1e-15,不能再大了。

技术分享

 

根据数轴理解→→→→→→→→→→→→→↓

a==b fabs(a-b)<eps
a>b fabs(a-b)>eps
a≥b fabs(a-b)>-eps
a<b fabs(a-b)<-eps
a≤b fabs(a-b)<eps
  • 一个浮点数陷阱:
1 //输入有l,输出没有
2 scanf("%lf");
3 printf("%f");
  • 关于位运算

1.& , | , ~  , ^ , << , >>

   and,or,not,xor,lsh,rsh

2.位运算的优先度很低,所以记得要加括号。但是得益于它优先度比较低,算起来也比较快。所以平时写的时候最好用位运算,以防被卡掉一个点。

3.作用:

①判断奇偶(原因是二进制奇数个位一定是1):

1 int a;
2 if(a & 1)  //奇数
3 else //偶数

乘除2的幂:

1 int a;
2 a>>1;   //即除2。二进制每右移一位就是除2
3 a<<1;  //即乘2.不过要小心溢出。如果溢出的话首位的符号位就会消失,出现变负等情况

③如何用位运算求得一个整数除以16的余数?

除以16,即24,即将二进制被除数a右移4位。那么根据抑或运算的性质,a&15得到的值即为a除以16得到的余数。

Class 1 -- 知识点串讲