一、AVX -0影响
在AVX指令运算中,-0和0是不同的,-0运算在常规运算中没有影响,但在按位计算中会造成很严重的影响
比如:

#define AVX_ONE_FLOAT {1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f}__m256 one = _mm256_set1_ps(0.f);
__m256 neg_one = _mm256_set1_ps(-0.f);
__m256 one_half = _mm256_set1_ps(-1.f);__m256 mul = _mm256_and_ps(_mm256_mul_ps(one, one_half),AVX_ONE_FLOAT);   //  {-1})
__m256 neg_mul = _mm256_and_ps(_mm256_mul_ps(neg_one, one_half),AVX_ONE_FLOAT);  //{1}

如上所示,mul和neg_mul的结果完全相反
二、去除-0符号
如何在消除-0的影响时,又能不影响其他值呢,如下所示:

#define EQ_OQ 0x0         //等于 =
#define AVX_ONE_FLOAT {1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f}
#define AVX_NEG_ONE_FLOAT {-1.f,-1.f,-1.f,-1.f,-1.f,-1.f,-1.f,-1.f}
#define AVX_ZERO_FLOAT {0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f}
#define AVX_NEG_ZERO_FLOAT {-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f}__m256 value = _mm256_set_ps(0.6f, 0.4f, -0.f, 0, -0.f, -0.6f, -0.3f, -0.1f);__m256 zero_flg = _mm256_and_ps(_mm256_cmp_ps(value, AVX_NEG_ZERO_FLOAT, EQ_OQ), AVX_NEG_ONE_FLOAT);  //取0标志
//{ 0.000000000      0.000000000      0.000000000      -1.00000000      -1.00000000      -1.00000000      0.000000000      0.000000000 }
__m256 dir_flg = _mm256_and_ps(_mm256_or_ps( _mm256_and_ps(value, AVX_NEG_ZERO_FLOAT), AVX_ONE_FLOAT),AVX_NEG_ONE_FLOAT);   //取符号
//{ -1.00000000      -1.00000000      -1.00000000      -1.00000000       1.00000000      -1.00000000       1.00000000       1.00000000}
__m256 zero_and_dir = _mm256_and_ps(zero_flg, dir_flg);  //-0 方向
//{1.00000000       1.00000000       1.00000000      -1.00000000       1.00000000      -1.00000000       1.00000000       1.00000000 }
__m256 zero_dir = _mm256_or_ps(zero_or_dir, AVX_ONE_FLOAT);  value = _mm256_mul_ps(value, zero_dir);  // == 0   {1}
``//{ -0.100000001     -0.300000012     -0.600000024      0.000000000      0.000000000      0.000000000      0.400000006      0.600000024}1、将-0和0筛选出来
2、取所有值符号
3、取-0和0符号位,移除非0符号影响
4、与-0相乘即可消除-0影响我蠢了value = _mm256_add_ps(value, AVX_ZERO_FLOAT);  //加0就可以消除影响

AVX指令去除-0符号位相关推荐

  1. 汇编王爽老师,FR寄存器的溢出位OF 与 进位CF的解析,补充SF符号位,cmp与ZF

      dosbox里运行debug.exe程序,显示的8位标志寄存器信息如下:    OF DF IF SF ZF AF PF CF OV DN EI NG ZR AC PE CY NV UP DI P ...

  2. C语言符号位补码要变吗,补码与符号位取反

    补码与符号位取反 先来一个 C 语言的小例子: #include #include int main(void) { int16_t n = -1; n &= 0x7FFF; // 按位与 p ...

  3. 汇编语言-013(DAS 、DAA与DAS、QWORD类型用SBB借位减法、编写指令将AX符号扩展到EAX,不能使用CWD、用SHR和条件判断指令将AL循环右移一位、SHLD、压缩十进制转换)

    1:DAS : SUB或SBB在AL中生成二进制结果,DAS(减法后的十进制调整)转压缩十进制格式 .386 .model flat,stdcall.stack 4096 ExitProcess PR ...

  4. 《编写高质量代码:改善c程序代码的125个建议》——建议14-2:在右移中合理地选择0或符号位来填充空出的位...

    本节书摘来自华章计算机<编写高质量代码:改善c程序代码的125个建议>一书中的第2章,建议14-2,作者:马 伟 更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  5. 有一个字长32位的浮点数符号位1位_边缘计算专题:(二)别看只有0和1,数学不好的勿进!...

    一.二进制数与信息表示 1.概述 二进制的由来 德国最重要的自然科学家.数学家.物理学家.历史学家和哲学家,一个举世罕见的科学天才,和牛顿同为微积分的创建人--莱布尼兹. 在数学史上,西方史学家认为他 ...

  6. 编程中无穷大的设定 很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相

    很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相加会变成负数,还有如 ...

  7. 将0.1101101*2^(-10)表示成阶码用4位移码、尾数用8位原码(含符号位)的浮点数

    0.1101101 * 2^(-10) 表示成阶码用4位移码.尾数用8位原码(含符号位)的浮点数是: 符号位:0 阶码(4位移码):0111 尾数(8位原码):11011010 所以,0.110110 ...

  8. 为什么计算机中数字符号位0表示正数,1表示负数

      大学时上计算机组成原理课程的时候,上到计算机如何存储数据的相关知识时,因为计算机世界里面所有的数据归根结底都是由0和1来存储的,那么如何表达数值的正负呢?只知道书本上说是有一个符号位,当该符号位为 ...

  9. SF符号位什么时候为1,什么时候为0!二进制如何判断符号位正负!

    首先让我们看一下SF到底是什么? SF(sign flag)符号位:当运算结果为负时,SF置1,记为NG(negative),为正时清零记为NZ(Non Zero). 那么我看这段说明简直就是一点用处 ...

最新文章

  1. 一步步带你做vue后台管理框架(三)——登录功能
  2. 广汽研究院BMS软件工程师_感·创未来 2020广汽科技日有哪些干货?
  3. OpenCV使用形态学转换提取水平和垂直线的实例(附完整代码)
  4. 选项卡示例代码###
  5. Exchange Server 2013预览版服务器角色概况
  6. 为什么乱码:meta http-equiv=content-type前的非ANSI字符
  7. 河北大学计算机在哪学,河北大学计算机科学与技术学院
  8. verilog 不可综合语句 总结 汇总(Z)
  9. Adobe Air 写文件如何换行
  10. python第四课知识点总结
  11. uboot中DEBUG定义
  12. Kalman Filter—Data Fusion, Covarince Matrix, State Space Representation, Observation
  13. 神经网络常用激活函数总结
  14. 密码字典生成工具—Crunch的使用
  15. 静态链表(简单介绍)
  16. 摄像头设计工程师面试技巧_系统设计面试准备的5个技巧
  17. cidr计算器android,JavaScript 实现 CIDR 详细信息计算
  18. 在上海创业的日子之注册公司的详细流程
  19. 技术小咖之基于SDK的第一个windows图形界面程序
  20. keycloak 的配置与ftl模板文件的表达式相互关联

热门文章

  1. linux ls全拼,2020-3-4--linux常用命令全拼
  2. “速课小龙”项目冲刺4
  3. 关于superfetch
  4. 深度学习在美团点评的应用
  5. 18位身份证和组织机构代码校验ORACLE函数
  6. 利用MomentJS 绘制日历
  7. 画中画效果自由制作,视频、图片都可制作
  8. 比较好个性5页面简历
  9. 【转】CVPR2019目标检测汇总
  10. XMLViewer xml查看器