C语言中abs()用法及其他绝对值函数

一、abs()用法说明

1、基本说明

功能:求整数的绝对值。
头文件:#include
定义函数:int abs(int j);
函数说明:abs()用来计算参数j的绝对值,然后将结果返回。
返回值:返回参数j的绝对值结果。

2、补充解释:

语法abs(number)=|number|
说明:number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。数字的绝对值是其无符号的数值大小。例如,Abs(-1) 和 Abs(1) 都返回 1 。
而对于在matlab中相似的函数double,double(-1)则返回-1,也就是说abs(X)返回的是X的绝对值(absolute),而double(X)返回的则是X的精确值(presision vlaue)

3、C语言中abs函数的实现方法:

最简单的可以通过位运算,先判断第一位:0是正数直接等于就行了;1就表示负数,由于采用补码存储,转换时将除首位外的各位先-1再取反,再将首位等于0就行了楼上正解,用位运算速度也很快。

二、扩展类似abs()的函数

abs(x):整数x的绝对值。abs( int x );int abs(int x) ;

fabs(x):浮点数(小数)x的绝对值。fabs( double x );double fabs(double x),精确到双精度浮点型。

pow(a, x):a的x次方,即a^x,a和x是浮点数,返回值是浮点数(即使a和x都是整数,也会被转换成浮点数,因此整数运算可能损失精度,造成误差)。

exp(x):e的x次方,即e^x,x是浮点数,e是自然对数的底数(一个无理数,值为2.71828。.)
rand()随机产生一个数;

在C++中,相应的函数为 abs() 头文件可以是 cstdlib,或是 cmath, 但是用cmath时,
abs( int i )会出现二义性(在gcc的编译器上),所以还是用cstdlib做为头文件好,

在matlab中有时会遇到函数abs(1,x)这样的函数,这个比一般abs多一个输入量,它表示函数abs(x)的导数 ,因为abs(x)在0点的导数是不存在的,而对于x为复数 abs(x)是不解析的,所以它的取值只能是正数或者负数。abs(1,x)这个函数是matlab调用maple内核 所以不能直接在matlab里来进行数值计算 否则matlab会提示abs使用错误。

对abs(1,x)赋值可以用subs来做
见以下运行命令
example:

syms d
p=abs(d);
h=diff§
h =
sign(d)
subs(h,{d},5)
ans =
1
subs(h,{d},-5)
ans =
-1

subs(h,{d},0)
ans =
0
subs(h,{d},-10)

ans =

-1

abs(1,2)
错误使用 abs
输入参数太多。
abs(-2)
ans =
2
abs(0)
ans =
0
abs(2)
ans =
2

补充sub指令的功能语法

subs能够在符号表达式和符号矩阵中进行置换操作,下面我们就介绍一下它的调用语法规则:
R=subs(S) %将表达式S中的所有变量用调用的函数或MATLAB workspace中获得的值进行置换,将置换后的表达式赋给R;
R=subs(S,new) %用new置换表达式S中的自变量后在赋给R;
R=subs(S,old,new) %用new置换表达式中的old,然后将置换完的表达式赋给R。
也可以通过help subs搜索matlab自带的帮助信息进一步学习。

  • 55
    点赞
  • 325
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大山很山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值