最近学习要用到求绝对值函数,看了一下有很多种的abs函数,因此想自己实现这些代码。

下面是我进行测试的代码:

#include <stdio.h>

typedef unsigned int U32,u32;
typedef enum {FALSE,TRUE} BOOL; //求绝对值函数
float fabsf(float x)
{
//这里可以看到浮点数和整数在计算机中的表达方式不一样
//下面的这种方法,不能用于整数
U32* p; p=(U32 *)&x;
*p=*p & 0x7FFFFFFF; return x;
} int abs(int x)
{
//负数的补码=反码+1=~源码+1 ;这个公式仅是对绝对值有效,
//而符号位无关
/*
if( x & 0x80000000 )
return ~(--x);
else
return x;
*/ //或者用下面的方法
return ( x & 0x80000000 ) ? ~(--x) : x ; /*
或者用下面的方法
return x>=0 ? x:(-1*x) ;
*/ } double fabsd(double x)
{
/*
*因为double的sizeof(double)=8,
*所以处理需要技巧
*这里我们可以利用char*指针进行处理
*/
/*
unsigned char* p; p = (unsigned char*)&x;
p=p+7;
*p=*p & 0x7F; return x;
*/ //也可以用下面的方法
if(x<)
return -*x; return x; } BOOL isLittleEndian()
{
/*可以用下面这种方法实现
U32 x=0x12345678;
unsigned char *p; p=(unsigned char*)&x;
if(!(*p ^ (unsigned char)0x78))
return TRUE;
else //这里的else分支,其实可以不用
return FALSE;
*/ //也可以利用下面的方式实现
union
{
unsigned char x;
unsigned int y;
}a; a.y=(unsigned int)0x78;
if(!(a.x^(0x78)))
return TRUE;
else //这里的else分支,其实可以不用
return FALSE;
} int main()
{
double x=fabsf(-123.0);
U32 y=0x12345678;
unsigned char *p; printf("fabsf(-123.0)=%f,sizeof(double)=%d",x,sizeof(double));
printf("\nabs(x)=%d",abs(-));
printf("\nfabsd(x)=%f",fabsd(-300.123)); p=(unsigned char*)&y;
printf("\n%x",*p);
if(isLittleEndian())
{
puts("\nYes");
} getchar();
return ;
}

测试结果如下图所示:

  

【算法和数据结构】_12_小算法_abs_fabsf_fabsd_大端小端判断的更多相关文章

  1. python算法与数据结构-选择排序算法(33)

    一.选择排序的介绍 选择排序(Selection sort)是一种简单直观的排序算法.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素, ...

  2. python算法与数据结构-希尔排序算法(35)

    一.希尔排序的介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每 ...

  3. python算法与数据结构-算法介绍(31)

    一.算法和数据结构 什么是算法和数据结构?如果将最终写好运行的程序比作战场,我们程序员便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰:兵法!故,数据结构和算法是一 ...

  4. 数据结构(DataStructure)与算法(Algorithm)、STL应用

    catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...

  5. 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树

    http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...

  6. Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...

  7. 【数据结构】KMP算法

    我还是不太懂... 转2篇大神的解释    1>https://www.cnblogs.com/yjiyjige/p/3263858.html     2>https://blog.csd ...

  8. [Oracle] 关系型数据库排序算法和数据结构以及关联查询

    关系型数据库排序算法和数据结构以及关联查询 1. Merge sort 理解merge sort算法将有助于更好地理解数据库join操作 - merge join 算法逻辑 将2个有序的大小为N/2的 ...

  9. 数据结构与算法系列----最小生成树(Prim算法&amp;Kruskal算法)

     一:Prim算法       1.概览 普里姆算法(Prim算法).图论中的一种算法.可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中.不但包含了连通图里的全部顶点(英语:Ve ...

随机推荐

  1. Atitit Atitit 图像处理之  Oilpaint油画滤镜 水彩画 源码实现

    Atitit Atitit 图像处理之 Oilpaint油画滤镜 水彩画 源码实现 1.1. 具体原理参考1 2. 水彩画滤镜算法如下:1 2.1. 这个其实就是灰度层次降低维度的过程.2 2.2. ...

  2. Python字符进度条

    Python字符进度条 看看这个神奇的module from tqdm import trange from time import sleep for r in trange(10, 1, -1): ...

  3. 练习3:修改withdraw 方法 练习目标-使用有返回值的方法:在本练习里,将修改withdraw方法以返回一个布尔值来指示交易是否成功。

    boolean withdraw(double get){ if(get<=balance) { System.out.println("取钱"+get+"元,当余 ...

  4. 分享10条Visual Studio 2012的开发使用技巧

    使用Visual Studio 2012有一段时间了,并不是追赶潮流,而是被逼迫无可奈何.客户要求的ASP.NET MVC 4的项目,要用.NET 4.5来运行.经过一段时间的摸索,得到一点经验和体会 ...

  5. 【WP 8.1开发】自定义(RAW)通知的使用

    继续前面的话题,还是推送通知.上一篇文章中遗留了RAW通知的推送没有给各位演示,特特地留到现在,不为别的,只为这个RAW通知有点意思,玩起来会比较有意思.官方文档将RAW通知译为“原始通知”,这里还是 ...

  6. javascript类型系统——数组array

    × 目录 [1]创建 [2]本质 [3]稀疏[4]长度[5]遍历[6]类数组 前面的话 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javascript中的数组与 ...

  7. CSS画出的图

    // × 目录 [1]矩形 [2]圆形 [3]椭圆[4]直角三角形[5]正三角形[6]平行四边形[7]梯形[8]六角星[9]六边形[10]五角星 简单图形 矩形 div{ width: 100px; ...

  8. js选择目录

    找了好久,终于找到了! function browseFolder(path) {//打开本地目录(目录选择功能) try { var Message = "\u8bf7\u9009\u62 ...

  9. Linux - 变量

    printenv - print all or part of environment 显示所有变量:print 显示某个变量:print <variable name> 或者 echo ...

  10. 为网格布局图片打造的超炫 CSS 加载动画

    今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...