abs ( )【C语言库函数源代码】

本文展示了如何在C语言中实现绝对值函数abs,包括使用标准C库的方法和使用汇编指令的方法。示例代码在Dev C++环境下编译通过,通过main函数测试了不同情况下的绝对值计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言库函数源代码】

【本程序在Dev C++ 4.9.9.2 下编译通过】

int my_abs(int number)

{

   return (number>= 0 ? number : -number);

}

int my_asmabs(int number)

{

   __asm__(

      "mov %1,%%eax; /n/r"  //由输入寄存器 %1移动到eax

      "or %%eax,%%eax; /n/r" //或运算

      "jge 4f; /n/r"        //SF=OF 跳转

                    //(符号位和溢出位相同的时候,为正数)

      "neg %%eax; /n/r"     //取负数预算指令

      "4:"      

      "mov %%eax,%0; /n/r"  //把eax的值赋给输出寄存器 %0

      :"=r"(number)       //输出寄存器 %0

      :"r"(number)        //输入寄存器 %1

   );

   return number;

}

 

int main()

{

   printf("%d/n",my_asmabs(1));

   printf("%d/n",my_asmabs(-1));

   printf("%d/n",my_asmabs(0x7FFFFFFF));

   printf("%d/n",my_asmabs(-0x7FFFFFFF));

   system("pause");

   return 0;

}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值