文档库 最新最全的文档下载
当前位置:文档库 › VHDL数据类型

VHDL数据类型

VHDL数据类型
VHDL数据类型

VHDL数据类型

VHDL是一种强数据类型语言。

要求设计实体中的每一个常数、信号、变量、

函数以及设定的各种参量都必须具有确定的数据类

型,并且相同数据类型的量才能互相传递和作用。

VHDL数据类型分为四大类:

? 标量类型(SCALAR TYPE);

? 复合类型(COMPOSITE TYPE);

? 存取类型(ACCESS TYPE);

? 文件类型(FILES TYPE)

76 又分为:

? 预定义数据类型、

? 用户自定义数据类型

1、VHDL的预定义数据类型

1)布尔量(boolean)

布尔量具有两种状态:false 和 true

常用于逻辑函数,如相等(=)、比较(<)

等中作逻辑比较。

如,bit 值转化成boolean 值:

boolean_var := (bit_var = ‘1’);

77 2)位(bit)

bit 表示一位的信号值。

放在单引号中,如‘0’或‘1’。

3)位矢量(bit_vector)

bit_vector 是用双引号括起来的一组位数据。

如:“001100”X“00B10B”

4)字符(character)

用单引号将字符括起来。

variable character_var : character;

... ...

Character_var : = ‘A’;

78 5)整数(integer)

integer 表示所有正的和负的整数。硬件实现时,

利用32位的位矢量来表示。可实现的整数范围为:

-(231-1) to (231-1)

VHDL综合器要求对具体的整数作出范围限定,

否则无法综合成硬件电路。

如:signal s : integer range 0 to 15;

信号 s 的取值范围是0-15,可用4位二进制数表

示,因此 s 将被综合成由四条信号线构成的信号。

79 6)自然数(natural)和正整数(positive)

natural是integer的子类型,表示非负整数。

positive是integer的子类型,表示正整数。

定义如下:

subtype natural is integer range 0 to

integer’high;

subtype positive is integer range 1 to

integer’high;

80 7)实数(REAL)

或称浮点数

取值范围:-1.0E38 - +1.0E38

实数类型仅能用于VHDL仿真器,一般综合器

不支持。

8)字符串(string)

string 是 character 类型的一个非限定

数组。用双引号将一串字符括起来。如:

variable string_var : string(1 to 7);

……

string_var := “Rosebud”;

81 9)时间(TIME)

由整数和物理单位组成

如:55 ms,20 ns

10)错误等级(SEVERITY_LEVEL)

仿真中用来指示系统的工作状态,共有四种:

NOTE(注意)、

WARNING(警告)、

ERROR(出错)、

FAILURE(失败)

82 2、IEEE预定义标准逻辑位与矢量

1)std_logic 类型

由 ieee 库中的std_logic_1164 程序

包定义,为九值逻辑系统,如下:

(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)

‘U’:未初始化的,‘X’:强未知的,

‘0’:强0,‘1’:强1,

‘Z’:高阻态,‘W’:弱未知的,

‘L’:弱0,‘H’:弱1,

‘-’:忽略

83

由 std_logic 类型代替 bit 类型可以完成电

子系统的精确模拟,并可实现常见的三态总线电路。

2)std_logic_vector 类型

由 std_logic 构成的数组。定义如下:

type std_logic_vector is array(natural

range<>) of std_logic;

赋值的原则:相同位宽,相同数据类型。

84 3、用户自定义类型

用户自定义类型是VHDL语言的一大特色。

可由用户定义的数据类型有:

? 枚举类型、

? 整数和实数类型、

? 数组类型、

? 记录类型、

? 子类型

85

用类型定义语句TYPE和子类型定义语句

SUBTYPE实现用户自定义数据类型。

TYPE语句格式:

例:type byte is array(7 downto 0) of bit;

variable addend : byte;

type week is (sun, mon, tue, wed, thu,

fri, sat);

type 数据类型名 is 数据类型定义 [of 基本数据类型];

86 SUBTYPE语句格式:

例:

subtype digits is integer range 0 to 9;

由subtype 语句定义的数据类型称为子类型。

subtype 子类型名 is 基本数据类型约束范围;

87 1)枚举类型

枚举该类型的所有可能的值。格式:

如:type std_logic is(‘U’,‘X’,‘0’,‘1’,

‘Z’,‘W’,‘L’,‘H’,‘-’)

如:type color is(blue,green,yellow, red);

type my_logic is (‘0’, ‘1’, ‘U’, ‘Z’);

variable hue : color;

signal sig : my_logic;

hue := blue;sig <= ‘Z’;

type 类型名称 is (枚举文字{,枚举文字});

88 枚举类型的编码:

综合器自动实现枚举类型元素的编码,一

般将第一个枚举量(最左边)编码为0,以后的

依次加1。编码用位矢量表示,位矢量的长度

将取所需表达的所有枚举元素的最小值。

如:type color is(blue,green,yellow,red);

编码为:blue=“00”;

green=“01”;

yellow=“10”;

red=“11”;

89 2)整数类型

用户定义的整数类型是标准包中整数类型的子范围。格式:

例:type my_integer is integer range 0 to 9;

3)数组类型

数组:同类型元素的集合。VHDL支持多维数组。

多维数组的声明:

type byte is array(7 downto 0) of bit;

type vector is array(3 downto 0) of byte;

限定数组、非限定数组、属性:

type 类型名称 is range 整数范围;

90 限定数组:

其索引范围有一定的限制。

格式:

非限定数组:数组索引范围被定义成一个类型范围。

格式:

例:type bit_vector is array(integer range <>)

of bit;

variable my_vector:bit_vector (5 downto -5);

type 数组名 is array(数组范围) of 数据类型;

type 数组名 is array(类型名称 range <>) of 数据类型;

91 属性:

VHDL为多种类型定义了属性。

语法如下:

对象’属性

VHDL为数组预先定义的属性:

left right

high low

length range

reverse_range

92 对应变量:

variable my_vector : bit_vector (5 downto -5);

各属性如下:

my_vector’left 5

my_vector’right -5

my_vector’high 5

my_vector’low -5

my_vector’length 11

m y_vector’range (5 downto -5)

my_vector’reverse_range (-5 to 5)

93 4)记录类型

记录是不同类型的名称域的集合。

格式如下:

访问记录体元素的方式:记录体名.元素名

type 记录类型名 is record

元素名:数据类型名;

元素名:数据类型名;

end record;

94 例:

constant len:integer:= 8 ;

subtype byte_vec is bit_vector(len-1 downto 0);

type byte_and_ix is record

byte : byte_vec;

ix : integer range 0 to len;

end record ;

signal x, y, z : byte_and_ix ;

signal data : byte_vec ;

signal num : integer ;

…….

x.byte <= “11110000” ;

x.ix <= 2 ;

data <= y.byte ;

num <= y.ix ;

z <= x ;

95 5)子类型

子类型是已定义的类型或子类型的一个子集。

格式:

例:

bit_vector 类型定义如下:

type bit_vector is array (natural range <>)

of bit;

如设计中只用16bit;可定义子类型如下:

subtype my_vector is bit_vector(0 to 15);

注:子类型与基(父)类型具有相同的操作符和子

程序。可以直接进行赋值操作。

subtype 子类型名 is 数据类型名[范围];

96 4、数据类型转换

VHDL是一种强类型语言,不同类型的数据

对象必须经过类型转换,才能相互操作。

1)类型转换函数方式

通过调用类型转换函数,使相互操作的数据对

象的类型一致,从而完成相互操作。

97 library ieee;

library dataio;

use ieee.std_logic_1164.all;

use dataio.std_logic_ops.all;

entity cnt4 is

port(clk: in std_logic;

p: inout std_logic_vector(3 downto 0);

end cnt4;

architecture behv of cnt4 is

begin

process(clk)

begin

if clk’event and clk=‘1’ then

p<=to_vector(2, to_integer(p)+1);

end if;

end process;

end behv;

99 2)直接类型转换方式

对相互间非常关联的数据类型(如整型、浮

点型),可进行直接类型转换。格式:

数据类型标识符(表达式)

如:variable a, b : real;

variable c, d : integer;

……

a:= real(c);

d:= integer(b);

常用数据类型转换使用详解

VC常用数据类型使用转换详解 CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘/0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。 而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。 1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以这里的LP和P是等价的. 2.C表示const 3.T是什么东西呢,我们知道TCHAR在采用Unicode方式编译时是wchar_t,在普通时编译成char. 为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。 LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。 然后为了实现两种编码的通用,提出了TCHAR的定义: 如果定义_UNICODE,声明如下: typedef wchar_t TCHAR; 如果没有定义_UNICODE,则声明如下: typedef char TCHAR; LPTSTR和LPCTSTR中的含义就是每个字符是这样的TCHAR。 CString类中的字符就是被声明为TCHAR类型的,它提供了一个封装好的类供用户方便地使用。

c语言试题数据类型、运算符与表达式

3 数据类型、运算符与表达式 一、单项选择题 1、以下选项中,不正确的 C 语言浮点型常量是( C )。 A. 160. B. 0.12 C. 2e4.2 D. 0.0 分析:e 后面的指数必须为整数。 2、以下选项中,( D )是不正确的 C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" 分析:在C 语言中,’a ’表示字符常量,”a ”表示字符串。 3、 在 C 语言中,字符型数据在计算机内存中,以字符的(C )形式存储。 A.原码 B.反码 C. ASCII 码 D. BCD 码 分析:将一个字符常量放入一个字符变量中,实际上并不是将字符本身放到内存单元中,而是将字符的对应的ASCII 码放到储存单元中。 4、若x 、i 、j 和k 都是int 型变量,则计算下面表达式后,x 的值是( C )。 x=(i=4,j=16,k=32) A. 4 B. 16 C.32 D.52 分析:(i=4,j=16,k=32)的值为最后一个表达式的值,即为32,所以x=32. 5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B )。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 分析:算术运算符包括加法运算“+”符减法运算“-”符乘法运算符“*”以及除法运算符“/”,赋值运算符包括“=、+=、-=、*=、/=、……”,关系运算符包括“<、<=、>、>=”。 6、若有代数式bc ae 3 ,则不正确的C 语言表达式是( C )。 A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3 分析:C 选项表达的是3ace/b 。 7、表达式!x||a==b 等效于( D )。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) 分析:由符优先级先后顺序在!x||a==b 中应先算“||”再算“!”,最后算“==”。选项B 不影响运算顺序。 8、设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是( A )。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 分析:先算括号里面的,a 不大于b ,则m=0,c 不大于d ,则n=0. 9、 设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是( B )。 A. 3 B. 0 C. 9 D. -12 分析:从后往前算,a*=a 即a=a*a ,a=9;然后a-=a=9,a=a-9,=0;a+=0,a=a+a=0.

matlab数据类型及转换

Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。 1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127; 2、浮点:(single;double) 浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。 3、逻辑:(logical) Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0: A = rand(5); A(A>0.5)=0; 4、字符:(char) Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。 例如,命令name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数. 例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。 此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组: data= char(‘abc’,’abcd’) length(data(1,:)) ->? 4 cdata=cellstr(data) length(cdata{1}) ->?3 常用的字符操作函数 blanks(n) 返回n个空字符 deblank(s) 移除字符串尾部包含的空字符 (string) 将字符串作为命令执行 findstr(s1,s2) 搜索字符串 ischar(s) 判断是否字符串 isletter(s) 判断是否字母 lower(s) 转换小写 upper(s) 转换大写 strcmp(s1,s2) 比较字符串是否相同 strncmp(s1,s2,n) 比较字符串中的前n个字符是否相同 strrep(s1,s2,s3) 将s1中的字符s2替换为s3 5、日期和时间 Matlab提供三种日期格式:日期字符串如’1996-10-02’,日期序列数如729300(0000年1月1日为1)以及日期向量如1996 10 2 0 0 0,依次为年月日时分秒。 常用的日期操作函数

1、c语言-数据类型与运算符(含答案)详解

一、选择题 1. 可用作C语言用户标识符的一组标识符是( B )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 2. 存储以下数据,占用存储字节最多的是(D )。 A. 0 B. ‘0’ C. “0” D. 0.0 3. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 4. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( C )。 A. 12 B. 144 C. 156 D. 288 5. 假设在程序中a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数 式1/abc的表达式是( A)。 A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c 6. 设”int a=15,b=26;”,则”printf(“%d,%d”,a,b);”的输出结果是(C )。 A. 15 B. 26,15 C. 15,26 D. 26 7. 设x是一个int型的,y的值为10,则表达式x && y的值为(C )。 A. 1 B. 0 C. 与x值相同 D. 与x值相反 8. x>0 && x<=10的相反表达式为( A )。 A. x<=0 || x>10 B. x<=0 && x>10 C. x<=0 || x<=10 D. x>0 && x>10 9. x>0 || y==5的相反表达式为( B )。 A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5 10. 下面的哪个保留字不能作为函数的返回类型?( C ) 。 A. void B. int C. new D. long 11. 假定a为一个整型数组名,则元素a[4]的字节地址为(B) 。 A. a+4 B. a+8 C. a+16 D. a+32 12. 字符串”a+b=12\n”的长度为(B )。 A. 6 B. 7 C. 8 D. 9 13. 假定下列x和y均为int型变量,则不正确的赋值为( B )。 A. x+=y++ B. x++=y++ C. x=++y D. ++x=++y 14. 设有以下定义 int a=0; double b=1.25; char c=’A’; #define d 2 ( D ) A.a++; B. b++ C. c++; D.d++; 15. 设x和y均为bool量,则x&&y为真的条件是( A) 。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个 16.以下叙述中正确的是(A) A. C程序中注释部分可以出现在程序中任意合适的地方 B.花括号"{"和"}"只能作为函数体的定界符

VHDL语言学习

(本学习以MAXPLUS10为工具软件) 第一章、 VHDL程序的组成 一个完整的VHDL程序是以下五部分组成的: 库(LIBRARY):储存预先已经写好的程序和数据的集合 程序包(PACKAGE):声明在设计中将用到的常数、数据类型、元件及子程序 实体(ENTITY):声明到其他实体或其他设计的接口,即定义本定义的输入输出端口 构造体(ARCHITECTUR):定义实体的实现,电路的具体描述 配置(CONFIGURATION):一个实体可以有多个构造体,可以通过配置来为实体选择其中一个构造体 库 库用于存放预先编译好的程序包(PACKAGE)和数据集合体,可以用USE语句调用库中不同的程序包,以便不同的VHDL设计使用。 库调用的格式: LIRARY 库名 USE 库名.所要调用的程序包名.ALL 可以这样理解,库在硬盘上的存在形式是一个文件夹,比如库IEEE,就是一个IEEE的文件夹,可以打开MAX PLUSR安装源文件夹,进入VHDL93的文件夹,就可以看到一个IEEE的文件夹,这就是IEEE库,而里面的文件就是一个个对程序包或是数据的描述文件,可以用文本打开来查看文件的内容。 例如在VHDL程序里面经常可以看到“USE ”,可以这样解释这句话,本序里要用到IEEE 文件夹下程序包STD_LOGIC_1164,而STD_LOGIC_1164是可以在IEEE文件夹的文件里面看到的,用文本打开,可以看到有一名为“”PAKAGE定义。 简单的来说,库相当于文件夹,而程序包和数据就相当于文件夹里面的文件的内容(注意:不是相当于文件,因为程序包和数据都是在文件里面定义的,而文件名是和实体名相同的,可以说实体相当于文件)。

VHDL语言数据类型及相互转换

标准数据类型 1,整数(INTEGER) 范围:-46 2,实数(REAL) 范围: (综合器不支持) 书写时一定要有小数. 3,位(BIT) 在数字系统中,信号经常用位值表示,位的值用带单引号的'1'和'0'来表示标准数据类型 4,位矢量(BIT_VECTOR) 位矢量是用双引号括起来的一组位数据 "010101" 5,布尔量(BOOLEAN) 只有"真"和"假"两个状态,可以进行关系运算 6,字符(CHARACTER) 字符量通常用单引号括起来,对大小写敏感 明确说明1是字符时: CHARACTER'('1') 标准数据类型 7,字符串(STRING) 字符串是双引号括起来的由字母,数字或@,%,$组成的一串字符.区分大小写"laksdklakld" "10" 8,时间(TIME) 时间的单位:fs,ps,ns,ms,sec,min,hr 例: 10 ns 整数数值和单位之间应有空格 标准数据类型

9,错误等级(SEVERITY LEVEL) 在VHDL仿真器中,错误等级用来表示系统的状态,它共有4种: NOTE(注意) WARNING(警告) ERROR(错误) FAILURE(失败) 标准数据类型 10,自然数(NATURAL) 正整数(POSITIVE) 自然数是整数的一个子类型,包括0和正整数;正整数也是整数的一个子类型. 只能是正整数数据除定义类型外,有时还需要定义约束范围. INTEGER RANGE 100 DOWNTO 0 BIT_ VECTOR (3 DOWNTO 0) REAL RANGE TO IEEE定义的逻辑位与矢量 在IEEE的程序包std_logic_1164中定义了两个非常重要的数据类型: 1 ,std_logic 取值:0,1,Z,X,W,L,H Z:高阻 X:不定 W:弱信号不定 L:弱信号0 H:弱信号1 2,Std_logic_vector 注意 1,在使用"std_logic"和"std_logic_vector"时,在程序中必须声明库及程序包说明语句,即LIBRARY ieee和这两句在程序中必不可少. 2, std_logic有多个取值,与BIT不同,在编程时应特别注意,需要考虑全所有情况.

2.3 基本数据类型的转换

2.3基本数据类型的转换 本章目标 掌握基本数据类型间的自动转换 掌握任何基本数据类型的数据都会自动向String转换 掌握基本数据类型间的强制转换 Java的数据类型在定义时就已经确定了,因此不能随意转换成其他的数据类型,但Java允许用户有限度地做类型转换处理。数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种。 1 数据类型的自动转换 在计算机中完成一个计算时,要求参与计算的两个数值必须类型一致,如果不一致,计算机会自动将其中一个数值类型转换成另外一个数值的类型,然后完成计算。自动转换的原则如下: (1)转换前的数据类型与转换后的类型兼容。 (2)转换后的数据类型的表示范围比转换前的类型大。 例如,将short类型的变量a转换为int类型,由于short与int皆为整数类型,符合上述条件(1);而int的表示范围比short大,符合条件(2)。因此Java 会自动将原为short类型的变量a转换为int类型。 要注意的是,类型的转换只限该行语句,并不会影响原先所定义的变量的类型,而且通过自动类型的转换可以保证数据的精确度,它不会因为转换而损失数据内容。这种类型的转换方式也称为扩大转换。 范例:数据类型的转换 程序运行结果: x / y = 1.3519603 10 / 3.5 = 2.857142857142857 10 / 3 = 3 从程序的输出结果可以发现,int类型与float类型进行计算之后,输出的结

果会变成float类型,一个整型常量和一个浮点型常量进行计算之后,结果也会变为一个浮点数据,而如果两个int类型的常量进行计算,最终结果还是int类型,而其小数部分将会被忽略。 也就是说,假设有一个整数和双精度浮点数据做运算时,Java会所整数转换成双精度浮点数后再做运算,运算结果也会变成双精度浮点数。 提示:任何类型的数据都向String转型。 有一种表示字符串的数据类型String,从其定义上可以发现单词首字母大写了,所以此为一个类,属于引用数据类型,但是此类属于系统类,而且使用上有些注意事项,对于此种类型后面会有介绍,在此处所需要知道的只有以下两点: (1)String可以像普通变量那样直接通过赋值的方式进行声明。字符串是使用“””括起来的。两个字符串之间可以使用“+”进行连接。 (2)任何数据类型碰到String类型的变量或常量之后都向String类型转换。 范例:定义字符串变量 程序运行结果: str = lixinghua30 从运行结果来看,可以发现整型数据30自动转换成了字符的“30”,与字符串“lixinghua”进行了连接操作,变成了一个新的字符串“lixinghua30”。 范例:字符串常量操作的问题

数据类型、运算符与表达式练习题

第三章运算符与表达式练习题 一、单项选择题 1.下列数据中属于“字符串常量”的是()。 A.”a” B. {ABC} C. ?abc\0? D. ?a? 2.下列数据中属于“字符串常量”的是()。 A.ABC B. “ABC” C. ?abc? D. ?a? 3. 在PC机中,?\n?在内存占用的字节数是()。 A. 1 B. 2 C. 3 D. 4 4. 在PC机中,”a\xff” 在内存占用的字节数是()。 A. 5 B. 6 C. 3 D. 4 5.字符串”\”ABCD\””在内存占用的字节数是()。 A. 4 B. 6 C. 7 D. 8 6. 在C语言中,合法的长整型常数是()。 A. 0L B. 49627 C. 0.054838743 D. 2.1869e10 7.在C语言中,合法的短整型常数是()。 A. OL B. 0821 C. 40000 D. 0x2a 8.下列数据中不属于“字符常量”的是()。 A. …\a? B. …\160? C. …070? D. 070 9.char型常量在内存中存放的是()。 A. ASCII代码值 B. BCD代码值 C. 内码值 D. 十进制代码值 10. int a=4,b=3,c=-2,d=2; 逻辑表达式a>0&&b&&c<0&&d>0的值是()。 A. 1 B. 0 C. -1 D. 出错 11.在以下一组运算符中,优先级最高的运算符是()。 A. <= B. = C. % D. && 12.设整型变量i的值为3,则计算表达式i---i后表达式的值为()。 A. 0 B. 1 C. 2 D. 表达式出错 13.设整型变量i,j=3; 则计算表达式i=j+++j后i,j的值为()。 A. 4,4 B. 6,6 C. 4,6 D. 6,4 14.设整型变量a,b,c均为2,表达式a+++b++c++的结果是()。 A. 6 B. 9 C. 8 D. 表达式出错 15.设整型变量i,j值均为3,执行了“j=i++,j++,++i”后,i,j的值是()。 A. 3,3 B. 5,4 C. 4,5 D. 6,6 16.sizeof(double)的结果值是( )。 A.8 B. 4 C. 2 D. 出错 17. 表达式“1?(0?3:2):(10?1:0)”的值是()。 A. 3 B. 2 C. 1 D. 0 18.int a=0; if(a=1) a+=10; 结果的值是()。 A. 0 B. 11 C. 10 D. 出错 19.下列表达式中符合C语言语法的赋值表达式是()。 A. a=7+b+c=a+7 B. a=7+b++=a+7 C. a=(7+b,b++,a+7) D. a=7+b,c=a+7 20.下列表达式中,不正确的表达式是()。 A. a=1,b=1 B. y=int(x) C. a=b=5 D. i++

VHDL数据类型

VHDL是一种强数据类型语言。 要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类 型,并且相同数据类型的量才能互相传递和作用。 VHDL数据类型分为四大类: 1标量类型(SCALAR TYPE); 2复合类型(COMPOSITE TYPE); 3存取类型(ACCESS TYPE); 4文件类型(FILES TYPE) 又分为: 1预定义数据类型、 2用户自定义数据类型 1、VHDL的预定义数据类型 1)布尔量(boolean) 布尔量具有两种状态:false 和 true 常用于逻辑函数,如相等(=)、比较(<) 等中作逻辑比较。 如,bit 值转化成boolean 值: boolean_var := (bit_var = ‘1’); 2)位(bit) bit 表示一位的信号值。 放在单引号中,如‘0’ 或‘1’。 3)位矢量(bit_vector) bit_vector 是用双引号括起来的一组位数据。 如:“001100”X“00B10B” 4)字符(character) 用单引号将字符括起来。 variable character_var : character; ... ... Character_var : = ‘A’; 5)整数(integer) integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为: -(231-1) to (231-1) VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。 如:signal s : integer range 0 to 15; 信号 s 的取值范围是0-15,可用4位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。 6)自然数(natural)和正整数(positive) natural是integer的子类型,表示非负整数。 positive是integer的子类型,表示正整数。 定义如下: subtype natural is integer range 0 to

java的基本数据类型有八种

java的基本数据类型有八种 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! java的基本数据类型有八种四类八种基本数据类型1. 整型byte(1字节)short (2个字节)int(4个字节)long (8个字节)2.浮点型float(4个字节)double(8个字节)3.逻辑性boolean(八分之一个字节)4.字符型char(2个字节,一个字符能存储下一个中文汉字)基本数据类型与包装类对应关系和默认值short Short (short)0int Integer 0long Long 0Lchar Char '\u0000'(什么都没有)float Floa t0.0fdouble Double 0.0dboolean Boolean false 若某个类的某个成员是基本数据类型,即使没有初始化,java也会确保它获得一个默认值,如上所示。(这种初始化方法只是用于成员变量,不适用于局部变量)。jdk1.5支持自动拆装箱。可以将基本数据类型转换成它的包装类装箱Integer a = new Integer ();a = 100;拆箱int b = new Intger(100);一个字节等于8位,一个字节等于256个数,-128到127一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节一个汉字两个字符,占用两个字节基本数据类型自动转换byte->short , char->int->longfloat->doubleint ->floatlong->double小可转大,大转小会失去精度。字符串与基本类型或其他类型间的转换⑴其它

C语言数据类型和运算符及表达式复习题

数据类型、运算符和表达式复习题一.选择题 1. 以下不合法的用户标识符是:() a) f2_G3 b) If c) 4d d) _8 2. 以下选项中合法的用户标识符是:() a) long b) _2Test c) 3Dmax d) A.dat 3. 以下可用作用户标识符的是:() a) 12_a b) signed c) t-o d) _if 4. 以下不是关键字的标识符是:() a) continue b) char c) If d) default 5. C语言提供的合法的关键字是:() a) swicth b) cher c) Case d) void 6. 以下选项中不合法的int整型常数是() a) 32768b) -56 c) 03 d) 0xAF 7. 以下合法的长整型常量是() a) 2L b) 49627 c) 34566666 d) 213& 8. 以下正确的实型常量是() a) 1.2E b) .579899 c) 1.2e0.6 d) 8 9. 以下选项中合法的实型常数是() a) 5E2.0 b) E-3 c) .2E0d) 1.3E 10. 以下合法的八进制数是() a) 0135b) 068 c) 013.54 d) o7

11. 以下合法的十六进制数是() a) 0x b) 0x4de c) 0x1h d) ox77 12. 以下选项中非法的数值常量是() a) 019b) 0L c) 0xff d) 1e1 13. 若变量已正确定义,以下合法的赋值表达式是() a) a=1/b=2 b) ++(a+b) c) a=a/(b=5)d) y=int(a)+b 14. 若变量已正确定义,以下非法的表达式是() a) a/=b+c b) a%(4.0) c) a=1/2*(x=y=20,x*3) d) a=b=c 15. 设x为int类型,其值为11,则表达式(x++*1/3)的值是: a) 3 b) 4 c) 11 d) 12 16.设a,b均为double型,且a=5.5;b=2.5;则表达式 (int)a+b/b的值是() a) 6.500000 b) 6 c) 5.500000 d) 6.000000 17.若a为int型,且其值为3,则执行完表达式: a+=a-=a*a后,a的值是() a) -3 b) 9 c) -12 d) 6 18.设k和x均为int型变量,且k=7;x=12;则能使 值为3的表达式是() a) x%=(k%=5) b) x%=(k-k%5) c) x%=k-k%5 d) (x%=k)-(k%=5)

vhdl基本语法(简略共34页)

VHDL硬件描述语言 1.1 VHDL概述 1.1.1 VHDL的特点 VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于 VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原 语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下: 1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下 (top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。 2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设 计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数 据传送。利用单元(componet)、块(block)、过程(procure)和函数(function)等语句, 用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文 档资料的保存和广泛使用。 3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL 的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数 据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类 型语言。 4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行 和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构 和行为状态。 1.1.2 VHDL语言的基本结构 VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级 语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字 逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。但是VHDL毕竟是一种描述 数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的 语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者 感到枯燥无味,不得要领。较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整 体的程序结构,再逐步介绍程序中的语法概念。 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路, 或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含程序包、实体和结构体三个部分。实体给出电路单元的外部输入输出接口信号和引脚信 息,结构体给出了电路单元的内部结构和信号的行为特点, 程序包定义在设计结构体和实体 中将用到的常数、数据类型、子程序和设计好的电路单元等。 一位全加器的逻辑表达式是: S=A⊕B⊕Ci Co=AB+ACi+BCi 全加器的VHDL程序的文件名称是fulladder.VHD,其中VHD是VHDL程序的文件扩展名, 程序如下: LIBRARY IEEE; --IEEE标准库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fulladder IS -- fulladder是实体名称 PORT( A, B, Ci : IN STD_LOGIC; --定义输入/输出信号 Co, S : OUT STD_LOGIC ); END fulladder; ARCHITECTURE addstr OF fulladder IS --addstr是结构体名 BEGIN

数据类型转换

数据类型转换 一、隐式类型转换 1)简单数据类型 (1)算术运算 转换为最宽的数据类型 eg: [cpp] view plain copy #include using std::cout; using std::endl; int main(int argc, char* argv[]) { int ival = 3; double dval = 3.14159; cout << ival + dval << endl;//ival被提升为double类型 return 0; } 其运行结果: 6.14159 int main(int argc, char* argv[]) { 010D17D0 push ebp 010D17D1 mov ebp,esp 010D17D3 sub esp,0DCh 010D17D9 push ebx 010D17DA push esi 010D17DB push edi 010D17DC lea edi,[ebp-0DCh] 010D17E2 mov ecx,37h 010D17E7 mov eax,0CCCCCCCCh 010D17EC rep stos dword ptr es:[edi] int ival = 3; 010D17EE mov dword ptr [ival],3 double dval = 3.14159; 010D17F5 movsd xmm0,mmword ptr [__real@400921f9f01b866e (010D6B30h)]

010D17FD movsd mmword ptr [dval],xmm0 cout << ival + dval << endl;//ival被提升为double类型 010D1802 mov esi,esp 010D1804 push offset std::endl > (010D1064h) 010D1809 cvtsi2sd xmm0,dword ptr [ival] 010D180E addsd xmm0,mmword ptr [dval] 010D1813 mov edi,esp 010D1815 sub esp,8 010D1818 movsd mmword ptr [esp],xmm0 010D181D mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (010D90A8h)] 010D1823 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A0h)] 010D1829 cmp edi,esp 010D182B call __RTC_CheckEsp (010D111Dh) 010D1830 mov ecx,eax 010D1832 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A4h)] 010D1838 cmp esi,esp 010D183A call __RTC_CheckEsp (010D111Dh) return 0; 010D183F xor eax,eax } 010D1841 pop edi } 010D1842 pop esi 010D1843 pop ebx 010D1844 add esp,0DCh 010D184A cmp ebp,esp 010D184C call __RTC_CheckEsp (010D111Dh) 010D1851 mov esp,ebp 010D1853 pop ebp 010D1854 ret (2)赋值 转换为被赋值对象的类型,但不会改变赋值对象的数据类型。 eg: [cpp] view plain copy #include

C++基本数据类型转换

atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include 定义函数 doubleatof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值 返回转换后的浮点型数。 附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); } 执行 c=-98.23 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include

定义函数 intatoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值 返回转换后的整型数。 附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include mian() { char a*+=”-100”; ch ar b*+=”456”; int c; c=atoi(a)+atoi(b); printf(c=%d\n”,c); } 执行 c=356 atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul 表头文件 #include 定义函数 longatol(const char *nptr); 函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值 返回转换后的长整型数。 附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例

VHDL经典教程(精简快速入门版)

3 VHDL语言 VHDL: VHSIC Hardware Description Language. 3.1 VHDL语言基础 3.2 VHDL基本结构 3.3 VHDL语句 3.4 状态机在VHDL中的实现 3.5 常用电路VHDL程序 3.6 VHDL仿真 3.7 VHDL综合

HDL----Hardware Description Language 一种用于描述数字电路的功能或行为的语言。目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。 优点: HDL设计的电路能获得非常抽象级的描述。如基于RTL(Register Transfer Level)描述的IC,可用于不同的工艺。 HDL设计的电路,在设计的前期,就可以完成电路的功能级的验证。HDL设计的电路类似于计算机编程。 常用的HDL语言:VHDL 、Verilog HDL

?VHDL 是美国国防部在20世纪80年代初为实现其高速集成电路硬件VHSIC 计划提出的描述语言; ?IEEE 从1986年开始致力于VHDL 标准化工作,融合了其它 ASIC 芯片制造商开发的硬件描述语言的优点,于93年形成了标 准版本(IEEE.std_1164)。 ?1995年,我国国家技术监督局推荐VHDL 做为电子设计自动化硬件描述语言的国家标准。 VHDL 概述: VHDL VHSIC Hardwarter Description Language Very High speed integrated circuit VHSIC

VHDL优点: ?覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言; ?VHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解; ?VHDL语言可以与工艺无关编程; ?VHDL语言已做为一种IEEE的工业标准,便于使用、交流和推广。 VHDL语言的不足之处: 设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。

数据类型转换

数据类型转换 各类整数之间的转换 C语言中的数分8位、16位和32位三种。属于8 位数的有:带符号 字符char,无符号字符unsigned char 。属于16位数的有:带符号整 数int,无符号整数unsigned int(或简写为unsigned),近指针。属 于32位数的有:带符号长整数long,无符号长整数 unsigned long, 远指针。 IBM PC是16位机,基本运算是16位的运算,所以,当8位数和16 位数进行比较或其它运算时,都是首先把8 位数转换成16位数。为了 便于按2的补码法则进行运算,有符号8位数在转换为16位时是在左边 添加8个符号位,无符号8位数则是在左边添加8个0。当由16位转换成 8位时,无论什么情况一律只是简单地裁取低8位,抛掉高8 位。没有 char或usigned char常数。字符常数,像"C",是转换为int以后存储 的。当字符转换为其它 16 位数(如近指针)时,是首先把字符转换为 int,然后再进行转换。 16位数与32位数之间的转换也遵守同样的规则。 注意,Turbo C中的输入/输出函数对其参数中的int和unsigned int不加区分。例如,在printf函数中如果格式说明是%d 则对这两种 类型的参数一律按2 的补码(即按有符号数)进行解释,然后以十进制 形式输出。如果格式说明是%u、%o、%x、%X,则对这两种类型的参数 一律按二进制 (即按无符号数) 进行解释,然后以相应形式输出。在 scanf函数中,仅当输入的字符串中含有负号时,才按2的补码对输入 数进行解释。 还应注意,对于常数,如果不加L,则Turbo C一般按int型处理。 例如,语句printf("%081x",-1L),则会输出ffffffff。如果省略1, 则输出常数的低字,即ffff。如果省略L,则仍会去找1个双字,这个 双字的就是int常数-1,高字内容是不确定的,输出效果将是在4个乱 七八糟的字符之后再跟ffff。 在Turbo C的头文件value.h中,相应于3 个带符号数的最大值, 定义了3个符号常数: #define MAXSHORT 0X7FFF #define MAXINT 0X7FFF #define MAXLONG 0X7FFFFFFFL 在Turbo C Tools中,包括3对宏,分别把8位拆成高4位和低4位, 把16位拆成高8位和低8位,把32位拆成高16位和低16位。 uthinyb(char value) utlonyb(char value) uthibyte(int value) utlobyte(int value) uthiword(long value) utloword(long valueu) 在Turbo C Tools中,也包括相反的3 个宏,它们把两个4位组成 一个8位,把两个8位组成一个16位,把两个16位组成一个32位。 utnybbyt(HiNyb,LoNyb) utwdlong(HiWord,Loword) utbyword(HiByte,LoByte)实数与整数之间的转换 Turbo C中提供了两种实数:float和 double。float 由32 位组 成,由高到低依次是:1个尾数符号位,8个偏码表示的指数位(偏值= 127),23个尾数位。double由64位组成,由高到低依次是:1 个尾数

相关文档
相关文档 最新文档