sse float 转int 截断和不截断
之前, 我用sse指令, 想把float 型转成int, 不过其中遇到了一些困惑,就是截断和不截断的问题, 这个问题一直困扰我好集体, 最后终于解决了, 原来sse本身就有截断和不截断的指令。
_mm_cvtps_epi32 是SSE2的一条指令CVTPS2DQ。在MSDN上的解释是
Converts the four single-precision, floating-point values of a to signed 32-bit integer values.
把四个float变量强转为四个int变量。其中需要注意的是他的截断规则:四舍五入,在进位后末位是偶数的进,否则不进位。
紧接着是另一个指令_mm_cvttps_epi32, Converts the four single-precision, floating-point values of a to signed 32-bit integer values using truncate。
这里就多了using truncate,意思是直接截断。与C/C++中的 r = (int)a 一样。使用它们时候要注意哦。
__m128 test1 = _mm_set_ps(3.4f, 3.5f, 3.6f, 4.5f);
__m128i test2 = _mm_cvtps_epi32(test1);
__m128i test3 = _mm_cvttps_epi32(test1);
test2 结果是: 3,4,4,4;
test3 结果是: 3,3,3,4;
sse float 转int 截断和不截断的更多相关文章
- 尝试优化骨骼动画计算的意外收获——使用嵌入式汇编对float转int进行优化
		本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4984530.html 公司引擎目前是使用CPU计算骨骼动画(采用了D3DX提供的函数 ... 
- 怎么会float交换器int
		最近突然想知道编译器整数浮球开关是如何实现的,现在很多信息,但遗憾的是甚至没有这方面的记录,所以我决定实现自己的简单的整数浮点转 随着float开启int为例 double转int类似 在做强转之前 ... 
- warning C4305: “=”: 从“int”到“unsigned char”截断解决方法[zz]
		在控制台程序中定义: float x; x=22.333; 编译会出现 warning C4305: “初始化”: 从“double”到“float”截断 系统默认此浮点数是22.333是double ... 
- 【转】java byte转long、double、float、int、short,或者long、double、float、int、short转byte
		原文网址:http://www.xuebuyuan.com/988752.html java byte与其他数据类型的转换主要用于二进制数据的编码和解码,主要用于网络传输,读写二进制文件,java和c ... 
- Python  实int型和list相互转换    现把float型列表转换为int型列表    把列表中的数字由float转换为int型
		第一种方法:使用map方法 >>> list = [, ] #带有float型的列表 >>> int_list = map(int,list) #使用map转换 & ... 
- C#二进制与字符串互转换,十六进制转换为字符串、float、int
		/// <summary> /// 将 字符串 转成 二进制 “10011100000000011100011111111101” /// </summary> /// ... 
- 神奇:java中float,double,int的值比较运算
		float x = 302.01f; System.out.println(x == 302.01); //false System.out.println(x == 302.01f); // ... 
- float和int转换
		http://blog.sina.com.cn/s/blog_5c6f79380101bbrd.html https://blog.csdn.net/ganxingming/article/detai ... 
- php float 转int
		round(x,prec) 参数 描述 x 可选.规定要舍入的数字. prec 可选.规定小数点后的位数. <?php echo(round(0.60)); echo(round(0.50)); ... 
随机推荐
- bzoj 5055: 膜法师  -- 树状数组
			5055: 膜法师 Time Limit: 10 Sec Memory Limit: 128 MB Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇 ... 
- Treap树理解
			title: Treap树理解 comments: true date: 2016-10-06 07:57:37 categories: 算法 tags: Treap树 树 Treap树理解 简介 随 ... 
- python开发_tkinter_获取文本框内容_给文本框添加键盘输入事件
			在之前的blog中有提到python的tkinter中的菜单操作 python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 python开发_tkinter_窗口控件_自 ... 
- Codeforces Round #358 (Div. 2) D. Alyona and Strings dp
			D. Alyona and Strings 题目连接: http://www.codeforces.com/contest/682/problem/D Description After return ... 
- alpha冲刺——代码规范、冲刺任务与计划(追光的人)
			代码规范 代码规范整合了自身项目实践还有诸多好的大公司的代码规范.如阿里巴巴开发手册.华为Java规范.W3C前端规范等. 由于内容过于详细和细致,为了方便查看,将其放置在了showDoc网站上(同时 ... 
- List常用子类的特点
			ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全, 效率较高 Vector 底层数据结构是数组,查询快,增删慢 线程安全, 效率较低 LinkedList 底 ... 
- Java_慎用方法级别的synchronized关键字
			为什么要这么说呢, 因为笔者被这个坑过(其实是自己坑自己)╮(╯_╰)╭ 先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代 ... 
- 模仿JQuery 的添加多个事件的原理
			var jquery=function(dom){ var obj={ ready:function(fn){ if(typeof dom.onload=="function"){ ... 
- JDK居然还有Server和Client模式
			JDK这货居然还分Server和Client版本,但经过观察,据说从1.7+版本开始这两者运行的区别已经逐步减少了.所以接下来的分析没啥意义. 参考: http://www.oracle.com/te ... 
- RAD Studio 2010~XE8 官方 ISO 下载地址 (2015-03-28更新)
			http://bbs.csdn.net/topics/390816856 RAD Studio XE8 目前最新版 v22.0.19027.8951 官方 ISO 文件下载(6.72GB):http: ... 
