数学运算 | c/c++ | c# | Java | python | Matlab |
加法 | a+b | a+b | a+b | a+b | a+b |
减法 | a-b | a-b | a-b | a-b | a-b |
乘法 | a*b | a*b | a*b | a*b | a*b |
普通除法 | a/b 要求计算数为浮点数 | a/b 要求计算数为浮点数 | a/b 要求计算数为浮点数 | a/b | a/b |
整除 | a/b 要求计算数为整数(正数向下取整,负数向上取整)。也可以使用取整函数,向下取整floor(a/b),向上取整ceil(a/b),需要包含math.h头文件。注意函数类型以及计算数类型为double,计算结果不能使用%d格式输出(因为即使计算数定义为整数,计算结果也会在前面补0,导致使用%d格式去输出结果时只会截取前面的四个字节,就得到了0) | a/b 要求计算数为整数(正数向下取整,负数向上取整)。也可以使用内部math类中的取整函数,向下取整Math.Floor(a/b),向上取整Math.Ceiling(a/b),“四舍六入五取偶”取整Math.Round(a/b)。 | a/b 要求计算数为整数(正数向下取整,负数向上取整)。也可以使用内部math类中的取整函数,向下取整Math.floor(a/b),向上取整Math.ceil(a/b),四舍五入取整(正数四舍五入,负数五舍六入) Math.round(a/b)。 | a//b(为向下取整),向上取整需要调用math.ceil(a/b)函数,首先要导入math模块:import math | 没有对应运算符,需要调用函数,截尾取整 fix(a/b),向下取整floor(a/b),向上取整ceil(a/b) |
取余 | a%b ,正负规则相同,均为a=qb+r (r 符号同 a),比如 7%3=1,-7%3=-1 | a%b ,正负规则相同,均为a=qb+r (r 符号同 a),比如 7%3=1,-7%3=-1 | a%b ,正负规则相同,均为a=qb+r (r 符号同 a),比如 7%3=1,-7%3=-1 | 没有对应的运算符,也没有对应函数,需要自行编程实现 | 没有对应的运算符,需要调用函数,rem(a,b),正负规则相同,均为a=qb+r (r 符号同 a),比如 7%3=1,-7%-3=-1 |
取模 | 没有对应运算符,也没有对应函数,需要自行编程实现 | 没有对应运算符,也没有对应函数,需要自行编程实现 | 没有对应运算符,也没有对应函数,需要自行编程实现 | a%b ,正负规则相同,均为a=qb+r (r 符号同 b),比如 -7%3=2,-7%-3=-1 | 没有对应运算符,需要调用函数,mod(a,b),正负规则相同,均为a=qb+r (r 符号同 b ) |
幂次方 | 没有对应运算符,需要调用库函数 pow(a,b),包含math.h头文件,注意pow的函数类型以及计算数类型为double,计算结果不能使用%d格式输出(因为即使计算数定义为整数,计算结果也会在前面补0,导致使用%d格式去输出结果时只会截取前面的四个字节,就得到了0) | 没有对应运算符,需要调用内部math类中的函数 Math.Pow(a,b) | 没有对应运算符,需要调用内部math类中的函数 Math.pow(a,b) | a**b或者调用函数pow(a,b) | a^b |
e的幂次方 | 需要调用库函数 exp(a),包含math.h头文件,计算结果不能使用%d格式输出 | 需要调用内部math类中的函数 Math.Exp(a) | 需要调用内部math类中的函数 Math.exp(a) | math.exp(a),首先要导入math模块:import math | exp(a) |
对数 | 以自然常数e为底的函数 log(a),以10为底的函数log10(a),底数无法任意指定 | Math.Log(a,b) ,以b为底的a的对数。参数b可以省略,省略时默认以自然常数e为底。 Math.Log10(a),以10为底 | 以自然常数为底 Math.log(a),以10为底 Math.log10(a),以自然常数为底 Math.log1p(a) =Math.log(a+1) | math.log(a,b) ,以b为底的a的对数。参数b可以省略,省略时默认以自然常数e为底。首先要导入math模块:import math | 以自然常数为底 log(a),以2为底 log2(a),以10为底 log10(a),底数无法任意指定 |
取余和取模的区别:取余得到的余数始终与被除数的符号保持一致,取模得到的模数始终与除数的符号保持一致。取余运算在计算商值时向0方向舍弃小数位,取模运算在计算商值时向负无穷方向舍弃小数位(或者说,取余,遵循尽可能让商大的原则。取模,遵循尽可能让商小的原则)。
位运算 | c/c++ | c# | java | python | matlab |
按位与 | a&b | a&b | a&b | a&b | bitand(a,b) |
按位或 | a|b | a|b | a|b | a|b | bitor(a,b) |
按位非 | ~a | ~a | ~a | ~a | bitcmp(a) |
左移n位 | a<<n | a<<n | a<<n | a<<n | bitshift(a,n) |
右移n位 | a>>n | a>>n | a>>n | a>>n | bitshift(a,-n) |
按位异或 | a^b | a^b | a^b | a^b | bitxor(a,b) |
逻辑运算 | |||||
逻辑与 | a&&b | a&&b | a&&b | a and b | a&&b |
逻辑或 | a||b | a||b | a||b | a or b | a||b |
逻辑非 | !a | !a (只能用于bool类型) | !a (只能用于bool类型) | not a | not a |
matlab中关于按位运算还有两个函数,bitget(a,n) 表示获取a的二进制形式第n位的值,bitset(a,n,v) 表示设置a的二进制形式第n位的值为v,其中v可省略,此时默认为1。