注意  :

第一种方法不可取,因为与FloatToInt的内部原理有差距 但是表面可以完成FloatToInt的基本功能

第二种方法可取  使用知识点位段操作

#include <stdio.h>#include <math.h>/*********************1.使用c语言标准库中的floor和ceil函数来进行向下或者向上取整********************************/
/****C语言整型使用原码、反码、补码进行编码,而浮点型使用IEEE754进行编码,所以强制转换基本上是没有任何意思的,因为编码格式不一样******/
/*
int FloatToInt1(float f)
{
int up = ceil(f);
int down = floor(f);
printf("向上取整=%d\n向下取整=%d\n", up, down);
return 0;
}
int main()
{
FloatToInt1(11.25);
getchar();
return 0;
}*//*********************2.通过移位进行操作********************************/
//参考博客 https://blog.csdn.net/huai1693838234/article/details/44804459  用C++实现
//float型数据在计算机中以IEEE754标准存储
//32位长度,1位实数符号位(原码表示),1位指数符号位,7位指数位(此八位为移码表示)以及23位数据位(补码表示)
#include<stdio.h>
#include<math.h>
union  Bit
{float val;//将要强转的值struct H{//由于机器是小端//小端简单地说 就是高地址存高位 低地址存低位 结构体成员是向高地址增长的//所以用如下方式获取unsigned int tail:23;//获取val的最后23位 即尾码unsigned int offset:8;//获取val的中间8位 即阶码+偏移量unsigned int flag:1;//获取val的第一位 即符号位}H;
};
//abs()函数:求绝对值(整数)
//exp()函数:e的次幂函数(以e为底的x次方值)  在另一种方法求float to int 会使用到,此次作业暂时不涉及。
int FloatToInt2(float val)
{if(abs(val) < 0.000001)//如果为0值 直接返回{return 0;}int ret;//保存返回值Bit temp;temp.val = val;int offset = temp.H.offset - 127;//获得偏移量ret = temp.H.tail;ret |= 0x00800000;//将丢弃的1填充回来ret = ret >> (23-offset);//移位操作 舍弃小数点后的数字if(temp.H.flag == 1)//负数{ret = -ret;}return ret;
}
int main()
{printf("%d\n",FloatToInt2(-12.7));getchar();return 0;
}

Mohican_4/6 C语言 移位运算 代码#FloatToInt相关推荐

  1. C语言移位运算 左移长度大于数据类型字节数的情况

    看CMU的CSAPP课程时,遇到一个很有意思的问题,特此查询资料,记录一下 1. 测试 sizeof(int) = 4 // int 数据类型位4个字节(32位) 测试程序1: 把a左移30位时 (正 ...

  2. c语言加减乘除运算代码_科协推文 || 走进C语言

    走进C语言 C语言66666!有了C语言还要女朋友干啥?没报错?C语言是世界上最好的语言!!C语言NB!!!我的头发呢?我C慈悲! 说起电脑,你可能对它有不同的印象.但是说起程序,你会想到什么? 帅气 ...

  3. c语言移位运算的作用,C语言的移位操作符使用方法

    位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算.位移位运算符分为左移和右移两种,均为双目运算符.第一运算对象是移位对象,第二个运算对象是所移的二进制位数.以下是小编为大家搜索整理 ...

  4. C语言移位运算(<<)

    上来个题目给大家感受下 解题 #include<stdio.h> int main() {int x;while(scanf("%d",&x)!=EOF){pr ...

  5. c语言中左移和乘法谁高级,C程序员说使用移位运算代替乘法和除法更有效,是真的吗?...

    在C语言程序开发中,某些移位操作似乎达到与乘法和除法运算相同的效果. 例如,4 >> 1等于2,向右移一位等于2除. 类似地,2 << 1等于4,向左移一位等于2. 因此,一些 ...

  6. 基于C语言、线性表的 二、八、十、十六进制转换 及 加运算、左右移位运算、乘法运算 的科学计算器设计

    源代码见资源:https://download.csdn.net/download/weixin_44410704/19840894 一.需求分析 1.1 设计题目 题目:科学计算器 用C语言实现十进 ...

  7. c语言中加减和移位,c中的移位运算

    C++位运算,看高手都是运用的灵活自如,打算从今天开始学习他!收藏 每次看到位运算的地方,都比较迷糊.以前学习C的时候也不求甚解,到现在看来,觉得位运算和指针在C++基本知识里是最难理解,最难融会贯通 ...

  8. c语言4字节移位运算,深入懂得C语言中的移位运算

    深入理解C语言中的移位运算 说明:本文主要摘录自<深入理解计算机系统>第二章信息的表示与处理. 移位运算: C语言还提供了一组移位运算,以便向左或者向右移动位模式.对于一个位表示为[xn- ...

  9. C 语言中负数移位运算讲解

    C 语言中负数移位运算讲解 "<<".">>"为移位运算符. "<<"为左移位运算符,即数据字节中的每个 ...

最新文章

  1. tomcat8 热部署
  2. 究竟是“二O一六年”还是“二零一六年”?嘴上会说可你会写吗?
  3. 关于一些对location认识的误区(转)
  4. 努比亚连续按下android版本,虚惊一场!努比亚Z17的Android 9.0真的不远了
  5. Maverick.Net介绍 (来自http://www.cnblogs.com/RicCC/archive/2006/09/17/506890.html)
  6. [Swift]快速反向平方根 | Fast inverse square root
  7. 软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?
  8. http://www.jianshu.com/p/42e11515c10f#
  9. linux重启gpu_远程配置Ubuntu深度学习服务器GPU驱动+Docker+CUDA多个版本
  10. laravel 社会化(联合)登录扩展包(QQ、微信、微博等)
  11. c语言编程我爱你红色代码,C语言告白代码,一闪一闪亮晶晶~
  12. 什么是jsp,什么是Servlet?jsp 和Servlet 有什么区别
  13. 不小心删了sxos文件夹_如何恢复Mac废纸篓删除的文件
  14. linux 安装多版本jdk
  15. GPS测量定位的类型
  16. NOIP 提高组 飞扬的小鸟
  17. [论文阅读] (23)恶意代码作者溯源(去匿名化)经典论文阅读:二进制和源代码对比
  18. div+css静态网页设计游戏网站设计——仿君海游戏官网(13页) HTML+CSS大作业_ 手游网页制作作业_网游网页设计...
  19. OpenMP: VS2010配置使用OpenMP
  20. [附源码]Python计算机毕业设计个人人际关系管理软件Django(程序+LW)

热门文章

  1. 核磁共振三维重建(视频)
  2. 奇想大白话之《羊了个羊》为何火,技术很厉害吗?
  3. Ambari2.7.4配置HIVE_AUX_JARS_PATH
  4. 输入一个整数求其位数和各个位数之和
  5. 测试窗体的FormBorderStyle属性,不同属性所对应的窗体边框显示情况
  6. Android编译命令m、mm、mmm区别及工程搭建示例
  7. ADP(自适应动态规划)-值迭代
  8. 1229. 日期问题 Java题解 (枚举) 【第八届蓝桥杯省赛C++B组,JAVA B组】
  9. matlab2017b和2018a,Matlab 2018a 比2017b有哪些改进?
  10. Burg法求解AR(p)模型参数(三)Levinson递推公式