<cmath>数学库中的函数

#include <iostream>  
#include <cmath>
using namespace std; 

int main(){ 
    cout << ceil(3.5) << " " << ceil(-3.5) << endl;

    // 向下取整
    cout << floor(3.5) << " " << floor(-3.5) << endl;

    // int 取整
    cout << int(3.5) << " " << int(-3.5) << endl;

    // 开方
    cout << sqrt(2) << " " << sqrt(9) << endl;

    // 乘方\幂
    cout << pow(2, 10) << endl;

    // 四舍五入
    cout << round(3.5) << " " << round(3.49) << endl;
    cout << int(3.5 + 0.5) << endl;

    // log 对数  底默认为自然数 e = 2.71828..... 无限不循环
    cout << log(2.71828) << endl;
    cout << log(10) / log(2) << endl;

    return 0;
}

平面直角坐标系

在平面内画两条互相垂直,并且有公共原点的数轴。 其中横轴为X轴,纵轴为Y轴。 这样我们就说在平面上建立了平面直角坐标系

坐标系中表示点的坐标 (x坐标, y坐标)

两点距离公式

已知两点(x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2) 两点间距离公式:dis = (x1x2)2+(y1y2)2\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}

指数与对数

N =axa^x a:底数 x:指数 N:幂 N为a的x次幂

x = logaNlog_aN a:底数 N:真数 x:对数 x是以a为底N的对数

编程时,可以利用换底公式求出任意对数值: logab=logb/logalog_ab=logb / loga

同余定理

同余关系

给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。

a≡b(mod m),即两个整数a、b除以整数m所得的余数相等。

①反身性:a ≡ a(mod m)

②对称性:若 a ≡ b(mod m),则 b ≡ a(mod m)

③传递性:a ≡ b(mod m),b ≡ c(mod m),则 a ≡ c(mod m)

④同余式相加: a ≡ b(mod m),c ≡ d(mod m),则 a ± c ≡ b ± d(mod m)

⑤同余式相乘:a ≡ b(mod m),c ≡ d(mod m),则 ac ≡ bd(mod m)

⑥线性运算:a ≡ b(mod m),c ≡ d(mod m),则 a ± c ≡ b ± d(mod m),a c ≡ b d(mod m)...

同余定理加法乘法应用

(a + b)%m = (a%m + b%m)%m

(a - b)%m = (a%m - b%m)%m

(a b)%m = (a%m b%m) %m

如果只有加、减、乘运算,求结果对m取模,可以在运算的过程中让中间结果对m取模。

例:(a+b*c)%m = (a%m + (b%m * c%m)%m)%m

约数和质数

约数(又称因数):整数a能够整除b,我们就说a是b的约数。

分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数。

质数(又称素数):是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

合数:在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。

1 既不属于质数也不属于合数。

m = p1α1p_1^{\alpha_1} p2α2p_2^{\alpha_2} ... pkαkp_k^{\alpha_k} 其中,p1,p2,...,pkp_1,p_2,...,p_k 都是质数。

最大公约数与最小公倍数

几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。

辗转相除法: 用较大数除以较小数,得到余数。 若余数为0,那么上一次除法中的除数就是最大公约数。 若余数不为0,那么下一次的除法为上一次除法中的除数除以余数。 重复这一过程,直到得到最大公约数 。

两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。

若两个整数a,b的最大公约数是gcd(a,b),最小公倍数是lcm(a,b),那么有:

a * b = gcd(a,b) * lcm(a,b)

lcm(a,b) = a / gcd(a,b) * b

数制概念

数制:是用一组固定的符号和统一的规则来表示数值的方法。

数码:数制中表示基本数值大小的不同数字符号。

基数:数制所使用数码的个数。

位权:数制中某一位上的1所表示数值的大小。

例:123中,1的位权是100,2的位权是10,3的位权是1

按位权展开:把数字写成数码乘位权的加和形式

123 = 1*100 + 2*10 + 3

区别不同进制数字的记法:(1101)2(1101)_2 (703)8(703)_8 (5F)16(5F)_{16}

 二进制

二进制 Binary (简写:B

数码:0、1

基数:2

例:

(101)2=122+021+120=(5)10(101)_2 = 1*2^2 + 0*2^1 + 1*2^0 = (5)_{10}

(1101)2=123+122+021+120=(13)10(1101)_2 = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = (13)_{10}

八进制

八进制 Octal (简写:OOct

数码:0、1、2、3、4、5、6、7

基数:8

例:

(15)8=181+580=(13)10(15)_8 = 1*8^1 + 5*8^0 = (13)_{10}

(101)8=182+081+180=(65)10(101)_8 = 1*8^2 + 0*8^1 + 1*8^0 = (65)_{10}

十进制

十进制 Decimal (简写:DDec

数码:0、1、2、3、4、5、6、7、8、9

基数:10

例:

(1234)10=1103+2102+3101+4100(1234)_{10} = 1*10^3 + 2*10^2 + 3*10^1 + 4*10^0

(101)10=1102+0101+1100(101)_{10} = 1*10^2 + 0*10^1 + 1*10^0

十六进制

十六进制 Hexadecimal (简写:HHex, x

数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F

基数:16

例:

(3F)16=3161+15160=(63)10(3F)_{16} = 3*16^1 + 15*16^0 = (63)_{10}

(101)16=1162+0161+1160=(257)10(101)_{16} = 1*16^2 + 0*16^1 + 1*16^0 = (257)_{10}

二进制、八进制、十六进制的关系

N进制数字串转为十进制

按位权展开

十进制整数转其它进制

除基取余

信息编码

机器数

一个数在计算机中的二进制表示形式, 叫做这个数的机器数。

有符号机器数的最高位为符号位,0 表示正数,1 表示负数。

将带符号位的机器数对应的真正数值称为机器数的真值

真值:3 机器数:0000 0011

真值:-3 机器数:1000 0011

原码反码补码

原码:符号位加上真值, 即用第一位表示符号, 其余位表示值。

反码

  • 正数的反码与原码相同

  • 负数的反码:符号位不变,其余各位取反

补码

  • 正数的补码与原码相同

  • 负数的补码:反码加 1

位运算

位逻辑运算符

位移运算符

运算符优先级

第5次作业

results matching ""

    No results matching ""