HLS Lesson6-数据类型转换
1.整数数据类型
传统的C语言可以采用:数据类型 数据变量 赋值
int var = -1;
ap_int<6> a_6bit_var_c = -22;//复制
ap_int<6> a_6bit_var_r2(“0b101010”,2);
ap_int<6> a_6bit_var_r8(“0o52”,c);
ap_int<6> a_6bit_var_r10(“-22”,10);
ap_int<6> a_6bit_var_r16(“0x2A”,16);
或者
ap_int<6> a_6bit_var_r2(“101010”,2);
ap_int<6> a_6bit_var_r8(“52”,c);
ap_int<6> a_6bit_var_r16(“2A”,16);
2.ap_fixed数据类型
ap_[u]fixed<W,I,Q,O>
W表示整个数据位宽,I表示整数部分数据字长,Q表示量化模式,O表示溢出模式。
1.ap_fixed<3,2> var1=1.25;
1.25的二进制表示是01.01,使用<3,2>这种方式则为01.0(所以var1其实等于1)
2.ap_fixed<3,2,AP_RND> var2=1.25;
使用<3,2>这种方式则为01.1(所以var1其实等于1.5)
3.ap_fixed<4,4> var3=19;
19的而己之表示是010011,取到的是低4位0011,所以var3的值为3.
4.ap_fixed<4,4,AP_RND,AP_SAT> var4=19;
AP_SAT表示4为有符号数表示的最大数值7。
3. 浮点数据类型
与c语言类似。
double vf2(5.0);
float vf3(5.0f);//单精度浮点型需要加上后缀f
还有数学库hls_math.h
隐式数据类型转换:(promotion,扩展)
ap_uint<8> res;
ap_int<4> v1=-4;
ap_uint<4> v2=4;
res =v1; //进行了扩展,有符号位扩展res = 252
res =v2; //进行了扩展,无符号位扩展res = 4
conversion(转换,可能导致数据错误)
ap_int<4> v5=3;
ap_uint<4> v6=3;
ap_int<2> res2;
res2=v5; //只取了低两位,11,对于有符号数,则为-1
res2=v6; //只取了低两位,11,对于有符号数,则为-1
ap_fixed<4,2> v1=1.25;
ap_fixed<3,2,AP_RND> v3 = v1; //1.5,精度有所损失
显式类型转换:
(1)通过()进行转换
(2)采用函数的方式
ap_uint<3> i3 = 4;
ap_uint<4> i4 = 10;
ap_ufixed<6, 4> i5 = i4 / i3;
cout << "This value of i5 : t" << i5 << endl;
ap_ufixed<6, 4> i6 = (ap_ufixed<6, 4>)i4 / i3;
cout << "This value of i6 : t" << i6 << endl;
ap_ufixed<6, 4> i7 = (ap_ufixed<6, 4>)(i4) / i3;
cout << "This value of i7 : t" << i7 << endl;
获取变量类型信息:typeid();需要加入头文件:#include<typeinfo>
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Tomcat, Jre 证书相关
- zookeeper集群搭建
- Maven Jar包制作与上传及基本使用
- 当你在`bind 0.0.0.0`的时候,你实际在做什么
- Hadoop Hive Hbase Kylin 环境搭建
- Spring MVC 学习
- RSeQC判断链特异性(strand-specific)
- bigWigMerge合并bigwig文件
- WPF桌面开发集成Nginx服务器
- chrome浏览器拦截(block)特定网站某些请求的方法
- 聊一聊:一道 Promise 链式调用的题目
- linux编译运行c++程序
- Python的运算符 (下)
- 深入理解JVM(③)Java的锁优化
- Spring 基于 Java 的配置 - 如何不用Beans.xml照样描述bean之间的依赖关系