C语言之数学运算
C语言基本运算符
运算符 | 说明 | 例子 | 备注 |
---|
= | 赋值运算符 | a = b; | | +、-、*、/、() | 基本四则运算 | a = (b + c) * d; | | % | 求余运算符 | a = b % 2; | 计算速度最慢且只能针对整数 | &、| 、^、~ | 位运算 | a = ~b | c; | 计算速度最快 | <<、>> | 左移和右移 | a = b >> 2; | |
类型转换
位运算
- 在二进制表示下进行的一类运算
- 二进制位与对应二进制位进行的一类运算
- 位运算只针对整型
- 使用位运算需要考虑代码可读性
1. 按位与运算符 &
- 单目:取地址
- 双目:按位与(全 1 则为 1,有 0 则为 0)
&运算 | 结果 |
---|
1 & 1 | 1 | 1 & 0 | 0 | 0 & 1 | 0 | 0 & 0 | 0 |
示例:%2 相当于 &1(整数判断奇偶性只与二进制的最后一位有关,若最后一位为 1 则为奇数)
2. 按位或运算符 |
按位或:有 1 则为 1 ,全 0 才为 0
| 运算 | 结果 |
---|
1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
3. 按位异或运算符 ^
按位异或:相同为 0 ,不同为 1
&运算 | 结果 |
---|
1 ^ 1 | 0 | 1 ^ 0 | 1 | 0 ^ 1 | 1 | 0 ^ 0 | 0 |
^ 是 ^ 的逆运算符,示例如下:
- a ^ b = c 等价于 c ^ b = a 等价于 c ^ a = b
- n ^ n = 0
- n ^ 0 = n
4. 按位取反运算符 ~
按位取反:0 转换为 1 , 1 转换为 0
5. 左移 << 和 右移 >>
左移:低位补 0,左移 N 位等价于 乘 2 的 N 次方,可替换乘法 右移:高位补符号位,**左移 1 位等价于 除 2 **,可替换除法
C语言中的数学函数库
常用函数 | 头文件 | 函数原型 | 功能说明 | 示例 |
---|
pow(a,n) | math.h | double pow(double a, double b) | 指数函数,a 为底数,b 为指数,返回 a 的 b 次方 | pow(2, 3) = 8 | sqrt(n) | math.h | double sqrt(double x) | 开平方函数,x 为被开方数,返回根号 x 的结果 | sqrt(16) = 4 | ceil(n) | math.h | double ceil(double x) | 上取整函数,x 为某个实数,返回 x 向上取整的值 | ceil(4.1) = 5 | floor(n) | math.h | double floor(double x) | 下取整函数,x 为某个实数,返回 x 向下取整的值 | floor(4.9) = 4 | abs(n) | stdlib.h | int abs(int x) | 整数绝对值函数,x 为某个整数,返回 x 的绝对值 | abs(-4) = 4 | fabs(n) | math.h | double fabs(double x) | 实数绝对值函数,x 为某个实数,返回 x 的绝对值 | fabs(-4.5) = 4.5 | log(n) | math.h | double log(double x) | 以 e 为底对数函数,x 为某个实数,返回 log 以 e 为底的值 | log(9) = 2.197225… | log10(n) | math.h | double log10(double x) | 以 10 为底对数函数,x 为某个实数,返回 log 以 10 为底的值 | log10(1000) = 3 | acos(n) | math.h | double acos(double x) | acos函数,x 为角度的弧度值,但会 arccos(x) 的结果 | acos(-1) = 3.1415926… | … | … | … | … | … |
代码示例一:
#include<stdio.h>
#include<math.h>
int main(){
double x;
while(scanf("%lf", &x)){
printf("%lf\n", pow(x, 1.0 / 3));
}
return 0;
}
代码示例二:
#include<stdio.h>
#include<math.h>
#define pi acos(-1)
int main(){
double x;
scanf("%lf", &x);
printf("%lf", x * pi / 180);
return 0;
}
|