8、24、32位图位数的相互转换
八位二进制码转化为BCD码及余三码、BCD码转化余三码

河南科技大学课程设计说明书课程名称 EDA技术题目八位二进制转化为BCD码及余三码、BCD码转化为余三码学院车辆与动力工程学院班级学生姓名指导教师日期2012年7月14号八位二进制码转化为BCD码及余三码、BCD码转化余三码摘要八位二进制数转化为BCD码和余三码的转换在计算机语言中起到了非常重要的作用,通过这次的课程设计让我们更好地掌握二进制数转化为BCD 码和余三码。
二进制转化为余三码不能直接转化,只能通过BCD码为中介进而转化成余三码。
余三码(余3码)是由8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421BCD码多3,故称为余三码。
BCD码的一种。
余三码是一种对9的自补代码,因而可给运算带来方便。
其次,在将两个余三码表示的十进制数相加时,能正确产生进位信号,但对“和”必须修正。
修正的方法是:如果有进位,则结果加3;如果无进位,则结果减3。
如,(526)10进制=(0101 0010 0110)8421BCD码=(1000 0101 1001)余3码EDA技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。
VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。
本设计采用VHDL,Altera公司的Quartus II软件仿真,来实现八位二进制到BCD和BCD到余三码的转换。
由于八位二进制的最大范围是0~255,而八位BCD码的范围是0~99,故在转换时输入信号只能取99以内的数。
关键词:八位二进制、BCD码、余三码、VHDL目录第一章绪论 (1)§1.1 课程设计题目 (1)§1.2 设计目的 (2)§1.3 课程设计要求 (2)第二章EDA、VHDL简介 (3)§2.1 EDA简介 (3)§2.2 VHDL简介 (3)第三章设计过程 (5)§3.1设计规划 (5)§3.2各个模块设计及原理图 (5)§3.2.1八位二进制码转化为八位BCD码 (5)§3.2.2八位BCD码转化为八位余三码 (6)§3.2.3八位二进制码转化为8位余三码 (7)第四章系统仿真 (9)§4.1八位二进制码转化为八位BCD码仿真及分析 (9)§4.2八位BCD码转化为八位余三码仿真及分析 (9)§4.3八位二进制码转化为八位余三码仿真及分析 (10)第五章总结 (11)参考文献 (12)第一章绪论随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的优势也更加突出,自20世纪70年代开始,这种用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎所有的应用领域EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
8位、24位、32位图像数据转换

8位、24位、32位图像数据转换最近调⽤⼀个⼈体检测算法,算法要求输⼊的是图⽚的BGR数据,但是拿到的数据是32位Argb数据,算法⽆法正确进⾏⼈体检测,从⽹上百度⽂库中搜到⼀个C#代码,可以进⾏转换。
⽹上的代码有点乱,整理了⼀下,记录留存。
整理后的代码如下:1class BitmapConvertHelp2 {3struct BitmapFileHeader4 {5//位图⽂件头6public UInt16 bfType;7public UInt32 bfSize;8public UInt16 bfReserved1;9public UInt16 bfReserved2;10public UInt32 bfOffBits;11 }1213struct BitmapInfoHeader14 {15//位图信息头16public UInt32 biSize;17public UInt32 biWidth;18public UInt32 biHeight;19public UInt16 biPlanes;20public UInt16 biBitCount;21public UInt32 biCompression;22public UInt32 biSizeImage;23public UInt32 biXPelsPerMeter;24public UInt32 biYPelsPerMeter;25public UInt32 biClrUsed;26public UInt32 biClrImportant;27 }2829struct RGBQUAD30 {31//位图调⾊板项32public byte rgbBlue;33public byte rgbGreen;34public byte rgbRed;35public byte rgbReserved;36 }3738private string filepath = null;//需打开的位图的路径39private string savepath = null;//转换后位图的保存路径40private BitmapFileHeader bfh;41private BitmapInfoHeader bih;4243private void Save8Bits(Bitmap bmp)44 {45//为位图⽂件头赋值46 bfh.bfOffBits = 1078;47 bfh.bfReserved1 = 0;48 bfh.bfReserved2 = 0;49 bfh.bfSize = 14;50 bfh.bfType = 19778;51//为位图信息头赋值52 bih.biBitCount = 8;53 bih.biClrImportant = 0;54 bih.biClrUsed = 0;55 bih.biCompression = 0;56 bih.biHeight = (uint)bmp.Height;57 bih.biPlanes = 1;58 bih.biSize = 40;59 bih.biSizeImage = (uint)(bmp.Height * ((bmp.Width * 8 + 31) / 32 * 4));60 bih.biWidth = (uint)bmp.Width;61 bih.biXPelsPerMeter = 0;62 bih.biYPelsPerMeter = 0;63//构造256⾊的调⾊板,⾮索引图64 RGBQUAD[] pal = new RGBQUAD[256];65for (int i = 0; i < 256; i++)66 {67 pal[i].rgbBlue = (byte)i;68 pal[i].rgbGreen = (byte)i;69 pal[i].rgbRed = (byte)i;70 pal[i].rgbReserved = 0;71 }72 FileInfo f = new FileInfo(savepath);73using (BinaryWriter bw = new BinaryWriter(f.OpenWrite()))74 {75//写⼊⽂件头76 bw.Write(bfh.bfType);77 bw.Write(bfh.bfSize);78 bw.Write(bfh.bfReserved1);79 bw.Write(bfh.bfReserved2);80 bw.Write(bfh.bfOffBits);81//写⼊信息头82 bw.Write(bih.biSize);83 bw.Write(bih.biWidth);84 bw.Write(bih.biHeight);85 bw.Write(bih.biPlanes);86 bw.Write(bih.biBitCount);87 bw.Write(bih.biCompression);88 bw.Write(bih.biSizeImage);89 bw.Write(bih.biXPelsPerMeter);90 bw.Write(bih.biYPelsPerMeter);91 bw.Write(bih.biClrUsed);92 bw.Write(bih.biClrImportant);93//写⼊调⾊板94for (int i = 0; i < 256; i++)95 {96 bw.Write(pal[i].rgbBlue);97 bw.Write(pal[i].rgbGreen);98 bw.Write(pal[i].rgbRed);99 bw.Write(pal[i].rgbReserved);100 }101//位图上下翻转102 bmp.RotateFlip(RotateFlipType.Rotate180FlipX);103 BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed); 104unsafe105 {106byte* ptr = (byte*)data.Scan0.ToPointer();107//位图的指针108109byte[] line = new byte[data.Stride];110//保存位图的⼀⾏111for (int i = 0; i < data.Stride; i++)112 line[i] = 0;113for (int i = 0; i < bmp.Height; i++)114 {115for (int j = 0; j < bmp.Width; j++)116 {117 line[j] = *ptr++;118 }119 ptr += data.Stride - bmp.Width;//指针跳过对齐的字节120 bw.Write(line, 0, line.Length);//写⼊位图的⼀⾏121 }122 }123 bw.Close();124 bmp.UnlockBits(data);125 }126 }127128public void Bit8To24()129 {130 Bitmap bmp8 = new Bitmap(filepath);131 BitmapData data8 = bmp8.LockBits(new Rectangle(0, 0, bmp8.Width, bmp8.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed); 132 Bitmap bmp24 = new Bitmap(bmp8.Width, bmp8.Height, PixelFormat.Format24bppRgb);133 BitmapData data24 = bmp24.LockBits(new Rectangle(0, 0, bmp24.Width, bmp24.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); 134unsafe135 {136byte* ptr8 = (byte*)data8.Scan0.ToPointer();137byte* ptr24 = (byte*)data24.Scan0.ToPointer();138for (int i = 0; i < bmp8.Height; i++)139 {140for (int j = 0; j < bmp8.Width; j++)141 {142//⽤8位位图的灰度值填充24位位图的R、G、B值143 *ptr24++ = *ptr8;144 *ptr24++ = *ptr8;145 *ptr24++ = *ptr8++;146 }147 ptr8 += data8.Stride - bmp8.Width; //跳过对齐字节148 ptr24 += data24.Stride - bmp8.Width * 3; //跳过对齐字节149 }150 }151 bmp8.UnlockBits(data8);152 bmp24.UnlockBits(data24);153 bmp24.Save(savepath);154 }155156public void Bit8To32()157 {158 Bitmap bmp8 = new Bitmap(filepath);159 BitmapData data8 = bmp8.LockBits(new Rectangle(0, 0, bmp8.Width, bmp8.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed); 160 Bitmap bmp32 = new Bitmap(bmp8.Width, bmp8.Height, PixelFormat.Format32bppArgb);161 BitmapData data32 = bmp32.LockBits(new Rectangle(0, 0, bmp32.Width, bmp32.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); 162163unsafe164 {165byte* ptr8 = (byte*)data8.Scan0.ToPointer();166byte* ptr32 = (byte*)data32.Scan0.ToPointer();167for (int i = 0; i < bmp8.Height; i++)168 {169for (int j = 0; j < bmp8.Width; j++)170 {171//⽤8位位图的灰度值,填充32位位图的RGB值,透明度为100%172 *ptr32++ = *ptr8;173 *ptr32++ = *ptr8;174 *ptr32++ = *ptr8++;175 *ptr32++ = 255;176 }177 ptr8 += data8.Stride - bmp8.Width;178 ptr32 += data32.Stride - bmp8.Width * 4;179 }180 }181 bmp8.UnlockBits(data8);182 bmp32.UnlockBits(data32);183 bmp32.Save(savepath);184 }185186public void Bit24To8()187 {188 Bitmap bmp24 = new Bitmap(filepath);189 BitmapData data24 = bmp24.LockBits(new Rectangle(0, 0, bmp24.Width, bmp24.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); 190 Bitmap bmp8 = new Bitmap(bmp24.Width, bmp24.Height, PixelFormat.Format8bppIndexed);191 BitmapData data8 = bmp8.LockBits(new Rectangle(0, 0, bmp8.Width, bmp8.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); 192193unsafe194 {195byte* ptr24 = (byte*)data24.Scan0.ToPointer();196byte* ptr8 = (byte*)data8.Scan0.ToPointer();197for (int i = 0; i < bmp8.Height; i++)198 {199for (int j = 0; j < bmp8.Width; j++)200 {201//⽤RGB值的均值作为8位位图的灰度值202 *ptr8++=(byte)(((int)(*ptr24++)+(int)(*ptr24++)+(int)(*ptr24++))/3);203 }204 ptr24 += data24.Stride - bmp8.Width * 3;205 ptr8 += data8.Stride - bmp8.Width;206 }207 }208 bmp8.UnlockBits(data8);209 bmp24.UnlockBits(data24);210 Save8Bits(bmp8);211 }212213public void Bit32To8()214 {215 Bitmap bmp32 = new Bitmap(filepath);216 BitmapData data32 = bmp32.LockBits(new Rectangle(0, 0, bmp32.Width, bmp32.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); 217 Bitmap bmp8 = new Bitmap(bmp32.Width, bmp32.Height, PixelFormat.Format8bppIndexed);218 BitmapData data8 = bmp8.LockBits(new Rectangle(0, 0, bmp8.Width, bmp8.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); 219unsafe220 {221byte* ptr32 = (byte*)data32.Scan0.ToPointer();222223byte* ptr8 = (byte*)data8.Scan0.ToPointer();224for (int i = 0; i < bmp8.Height; i++)225 {226for (int j = 0; j < bmp8.Width; j++)227 {228//⽤32位位图的RGB值的均值作为8位位图的灰度值229 *ptr8++ = (byte)(((int)(*ptr32++) + (int)(*ptr32++) + (int)(*ptr32++)) / 3);230 ptr32++;//跳过透明度字节231 }232 ptr32 += data32.Stride - bmp32.Width * 4;233 ptr8 += data8.Stride - bmp8.Width;234 }235 }236 bmp8.UnlockBits(data8);237 bmp32.UnlockBits(data32);238 Save8Bits(bmp8);239 }240241public void Bit32To24()242 {243 Bitmap bmp32 = new Bitmap(filepath);244 BitmapData data32 = bmp32.LockBits(new Rectangle(0, 0, bmp32.Width, bmp32.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); 245 Bitmap bmp24 = new Bitmap(bmp32.Width, bmp32.Height, PixelFormat.Format24bppRgb);246 BitmapData data24 = bmp24.LockBits(new Rectangle(0, 0, bmp24.Width, bmp24.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); 247unsafe248 {249byte* ptr32 = (byte*)data32.Scan0.ToPointer();250byte* ptr24 = (byte*)data24.Scan0.ToPointer();251for (int i = 0; i < bmp24.Height; i++)252 {253for (int j = 0; j < bmp24.Width; j++)254 {255//将32位位图的RGB值赋值给24位位图的RGB值256 *ptr24++ = *ptr32++;257 *ptr24++ = *ptr32++;258 *ptr24++ = *ptr32++;259 ptr32++;//跳过透明度字节260 }261 ptr24 += data24.Stride - bmp24.Width * 3;262 ptr32 += data32.Stride - bmp32.Width * 4;263 }264 }265 bmp32.UnlockBits(data32);266 bmp24.UnlockBits(data24);267 bmp24.Save(savepath);268 }269270public void Bit24To32()271 {272 Bitmap bmp24 = new Bitmap(filepath);273 BitmapData data24 = bmp24.LockBits(new Rectangle(0, 0, bmp24.Width, bmp24.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); 274 Bitmap bmp32 = new Bitmap(bmp24.Width, bmp24.Height, PixelFormat.Format32bppArgb);275 BitmapData data32 = bmp32.LockBits(new Rectangle(0, 0, bmp32.Width, bmp32.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); 276unsafe277 {278byte* ptr24 = (byte*)data24.Scan0.ToPointer();279byte* ptr32 = (byte*)data32.Scan0.ToPointer();280for (int i = 0; i < bmp32.Height; i++)281 {282for (int j = 0; j < bmp32.Width; j++)283 {284//将24位位图的RGB值赋值给32位位图的RGB分量285 *ptr32++ = *ptr24++;286 *ptr32++ = *ptr24++;287 *ptr32++ = *ptr24++;288 *ptr32++ = 255;//设透明度为100%289 }290 ptr24 += data24.Stride - bmp24.Width * 3;291 ptr32 += data32.Stride - bmp32.Width * 4;292 }293 }294 bmp32.UnlockBits(data32);295 bmp24.UnlockBits(data24);296 bmp32.Save(savepath);297 }298 }。
计算机组成原理第二章-计算机数据表示方法

9
一、计算机内的数据表示
6) 移码(增码)表 示
•移码表示浮点数的阶码,只有整数形式,如IEEE754中阶码用移码表示。
设定点整数X的移码形式为X0X1X2X3…Xn
则移码的定义是:
[X]移= 2n + X
2n X - 2n
•具体实现:数值位与X的补码相同,符号位与补码相反。
[X]补
10000001 11111111
[X]移
00000001 01111111
00000000 10000000
00000001 01111111
10000001 11111111
Confederal Confidential
11
一、计算机内的数据表示
3.计算机中常用的两种数值数据格式 1)定点数 •可表示定点小数和整数 •表现形式:X0.X1X2X3X4……..Xn
Confederal Confidential
15
一、计算机内的数据表示 IEEE754 32位浮点数与对应真值之间的变换流程
Confederal Confidential
16
一、计算机内的数据表示
例5 将十进制数20.59375转换成32位IEEE754格式浮点数的二进 制格式来存储。
解:先将十进制数换成二进制数: 20.59375=10100.10011(0.5+0.25+0.125+0.0625+0.03125) 移动小数点,使其变成1.M的形式 10100.10011=1.010010011×24
16
17
一、计算机内的数据表示
例6 若某浮点数x的二进制存储格式为(41360000)16 ,求与其对应 的32位浮点表示的十进的值。
三菱FX系列PLC功能指令一览表

三菱FX系列PLC功能指令一览表三菱FX系列PLC功能指令的数据格式1.位元件与字元件象X、Y、M、S等只处理ON/OFF信息的软元件称为位元件;而象T、C、D等处理数值的软元件则称为字元件,一个字元件由16位二进制数组成。
位元件可以通过组合使用,4个位元件为一个单元,通用表示方法是由Kn加起始的软元件号组成,n为单元数。
例如K2 M0表示M0~M7组成两个位元件组(K2表示2个单元),它是一个8位数据,M0为最低位。
如果将16位数据传送到不足16位的位元件组合(n<4)时,只传送低位数据,多出的高位数据不传送,32位数据传送也一样。
在作16位数操作时,参与操作的位元件不足16位时,高位的不足部分均作0处理,这意味着只能处理正数(符号位为0),在作32位数处理时也一样。
被组合的元件首位元件可以任意选择,但为避免混乱,建议采用编号以0结尾的元件,如S10,X0,X20等。
2.数据格式在FX系列PLC内部,数据是以二进制(BIN)补码的形式存储,所有的四则运算都使用二进制数。
二进制补码的最高位为符号位,正数的符号位为0,负数的符号位为1。
FX系列PLC可实现二进制码与BCD码的相互转换。
为更精确地进行运算,可采用浮点数运算。
在FX系列PLC中提供了二进制浮点运算和十进制浮点运算,设有将二进制浮点数与十进制浮点数相互转换的指令。
二进制浮点数采用编号连续的一对数据寄存器表示,例D11和D10组成的32位寄存器中,D10的16位加上D11的低7位共23位为浮点数的尾数,而D11中除最高位的前8位是阶位,最高位是尾数的符号位(0为正,1是负)。
10进制的浮点数也用一对数据寄存器表示,编号小数据寄存器为尾数段,编号大的为指数段,例如使用数据寄存器(D1,D0)时,表示数为10进制浮点数=〔尾数D0〕×10〔指数D1〕其中:D0,D1的最高位是正负符号位。
三菱FX系列PLC功能指令的表示格式早期的PLC大多用于开关量控制,基本指令和步进指令已经能满足控制要求。
IP地址子网掩码位数换算方法及解释子网掩码的作用

IP地址子网掩码位数换算方法及解释子网掩码的作用一个典型局域网的VLAN配置过程一个局域网的VLAN配置过程步骤命令及注释说明1、设置vtp domain v lan database 进入vlan配置模式vtp domain com 设置vtp管理域名称 comvtp server 设置交换机为服务器模式vtp client 设置交换机为客户端模式vtp domain 称为管理域,交换vtp 更新信息的所有交换机必须配置为相同的管理域。
核心交换机和分支交换机都要配置2、配置中继interface fa0/1 进入端口配置模式switchportswitchport trunk encapsulation isl 配置中继协议switchport mode trunk 核心交换机上以上都要配置,不过在分支交换机进入端口模式只配置这个命令就可以了3、创建vlan vlan 10 name counter创建了一个编号为10 名字为counter的 vlan。
创建vlan一旦建立了管理域,就可以创建vlan了。
在核心交换机上配置4、将交换机端口划入vlan switchport access vlan 10 归属counter vlan在分支交换机的端口配置模式下配置。
5、配置三层交换 interface vlan 10ip address 172.16.58.1 255.255.255.0 给vlan10配置ip在核心交换机上配置常见的VLAN配置类型名称简介及优缺点适用范围基于端口划分的VLAN按VLAN交换机上的物理端口和内部的PVC(永久虚电路)端口来划分。
优点:定义VLAN成员时非常简单,只要将所有的端口都定义为相应的VLAN组即可。
缺点:如果某用户离开原来的端口到一个新的交换机的某个端口,必须重新定义。
适合于任何大小的网络基于MAC地址划分VLAN这种划分VLAN的方法是根据每个用户主机的MAC地址来划分。
photoshop RGB模式里面 8位、16位、32位各适合什么样

请教photoshop 新建文档时候,RGB模式里面8位、16位、32位各适合什么样的情况?为你找了个答案:色域指电脑上色彩显示的范围上面的数字都是指2的指数即可显示从〇到2的若干次的色彩变化比喻来说,8位指的是“木头”,密度低,图像轻;16位指的是“石头”,密度高,图像重;当然事实上你称不出电子图像重量来,但有一个指标是很敏感也很直观的:文件大小,如果一个8位图像有10MB大小,它变成16时,大小就要翻一翻变成20MB。
这是8位和16位的区别之一;区别之二:16位图像相比8位图像有较好的色彩过渡,更加细腻,携带的色彩信息可以更加丰富。
这是1 6位图像可表现的颜色数目大大多于8位图像之故;区别之三:在PS里,8位图像绝大多数内置滤镜都可以正常使用,外挂滤镜也可以正常使用。
但16位下,大多数滤镜将停止工作,因为大多数滤镜基于8位图像来运算;区别之四:8位图像信息少,PS要处理的信息就少,处理速度快,硬件配置要求相对低;16位则慢而吃力;这里说的8位、16位,与我们一般情况下说的24位图像、32位图像是不是一回事?不是。
这里的8位和16位,指的是图像中的一个通道的位深,比如8位RGB,一个R通道有2的8次方个灰度级;16位RGB,一个R通道里有2的16次方个灰度级;8位RGB三个通道组成24位(3×8=24)图像,即是我们通常说的24位图像;16位RGB三个通道组成48位(3×16=48)图像(除了特殊的场合外,你不必去使用48位图像,它不是没用,但它是在极端情况下使用的,这是在目前来说)。
我们常见的8位通道RGB图像,3个通道共24位,即一张24位RGB图像里可表现大约1670万种颜色;而16位通道RGB图像,3个通道共48位,2的48次方是多少种颜色,可以算一下。
这不包括RGB能支持的一个透明度ALPHA通道,不算CMYK共4个通道。
这里的8位、16位、32位指颜色深度(Color Depth)用来度量图像中有多少颜色信息可用于显示或打印像素,其单位是“位(Bit)”,所以颜色深度有时也称为位深度。
8位向32位转换之决策

8位向32位转换之决策e络盟社区致力于服务设计工程师已有8年时间。
在这段时间内,技术不断发展,32位架构上市,使得工程师能够前所未有地推进其设计,我们也得以亲眼见证了微控制器市场的发展变化。
在全世界每天使用的数十亿件嵌入式设备中,许多仍然采用传统的8位和16位微控制器。
很多嵌入工程师是跟着这些较老的架构一起成长起来的,这些架构成本低、功耗低而且十分简单,即使32位设备发展迅猛也没有妨碍它们的受欢迎程度。
但是,32位设备声望渐隆,我们有必要对这个新架构的差异、优势和机遇进行详细说明。
现在,每个新项目都需要先回答下列问题:继续采用8位架构会错过什么?32位架构能够提供什么?32位设备目前占据着嵌入式MCU销售的领先地位,我们是否应该立即采取行动以避免落后?幸运的是,我们的行业创新永无止境。
有了Freescale(飞思卡尔)、Atmel、NXP及其它设备所采用的ARM Cortex M0+等内核,32位处理器就能够媲美传统8/16位MCU的实力,同时还能够提供众多的优势,让升级变得极具吸引力。
CortexM0+内核为转换而生,它的32位功能可将项目提升到一个全新的高度。
为什么要向32位转换?如果你问学工程的新生为什么要从8位向32位转换,那么你可能会得到这么一个明确的答案:32位是8位的4倍,位越高当然越好!实际上事情并非那么简单,不过32位MCU十分重要自有其很多令人信服的理由,即使对于“传统的”8位和16位项目来说也是如此。
提高性能:向32位内核转换之后,相对于目前使用的8位和16位架构来说,每MHz性能可以提高240倍。
你可以获得更快的32位数学运算处理速度,以及单周期32位乘法运算。
而且,你还可以获得单周期IO,用于位拆裂和软件协议仿真。
所有这些功能开启了全新的可能性,涉及软件堆栈(USB、蓝牙等)、RTOS、高级UI等等,而且还剩余充足的处理能力用于应用软件的自定义功能。
提高能源效率:CortexM0+内核效率极高,其Coremark/mA较8位或16位竞争性产品高达2倍。
计算机专业基础综合(计算机组成原理)模拟试卷4

计算机专业基础综合(计算机组成原理)模拟试卷4计算机专业基础综合(计算机组成原理)模拟试卷4(总分:56.00,做题时间:90分钟)一、单项选择题(总题数:24,分数:48.00)1.单项选择题1-40小题。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
(分数:2.00)____________________________________________________________________ ______________________ 解析:2.下列关于相联存储器的说法中,错误的是( )。
(分数:2.00)A.相联存储器指的是按内容访问的存储器B.在实现技术相同的情况下,容量较小的相联存储器速度较快C.相联存储器结构简单,价格便宜√D.在存储单元数目不变的情况下,存储字长变长,相联存储器的访问速度下降解析:解析:此题考查相联存储器的基本概念。
3.下列关于DRAM和SRAM的说法中,错误的是( )。
I.SRAM 不是易失性存储器,而DRAM是易失性存储器Ⅱ.DRAM比SRAM 集成度更高,因此读写速度也更快Ⅲ.主存只能由DRAM构成,而高速缓存只能由SRAM 构成Ⅳ.与SRAM相比,DRAM由于需要刷新,所以功耗较高(分数:2.00)A.Ⅱ、Ⅲ幂口ⅣB.I、Ⅲ和ⅣC.I、Ⅱ和ⅢD.I、Ⅱ、Ⅲ和Ⅳ√解析:解析:SRAM和DRAM都属于易失性存储器,掉电就会丢失,故I错误。
SRAM的集成度虽然更低,但速度更快,因此通常用于高速缓存Cache,故Ⅱ错误。
主存可以用SRAM实现,只是成本高,故Ⅲ错误。
与SRAM相比,DRAM成本低、功耗低,但需要刷新,故Ⅳ错误。
4.某机字长32位,主存容量1MB,按字编址,块长512 B,Cache共可存放16个块,采用直接映射方式,则Cache地址长度为( )。
(分数:2.00)A.11位√B.13位C.18位D.20位解析:解析:主存地址中除去主存字块标记的部分就是Cache地址,结构如下所示:而Cache地址的格式如下图所示:其中,块长512 B,主存按字(32位)编址,512 B/4 B=128=2 7,即块内字地址7位;Cache共可存放16个块,采用直接映射方式,2 4=16,即Cache字块地址4位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利达光电股份有限公司 | 彭军
9
2010 年 4 月 23 日
位图位数的转换
namespace BitmapConverter { class NeverBitmap { struct BitmapFileHeader {//位图文件头 public UInt16 bfType; public UInt32 bfSize; public UInt16 bfReserved1; public UInt16 bfReserved2; public UInt32 bfOffBits; } struct BitmapInfoHeader {//位图信息头 public UInt32 biSize; public UInt32 biWidth; public UInt32 biHeight; public UInt16 biPlanes; public UInt16 biBitCount; public UInt32 biCompression; public UInt32 biSizeImage; public UInt32 biXPelsPerMeter; public UInt32 biYPelsPerMeter; public UInt32 biClrUsed; public UInt32 biClrImportant; } struct RGBQUAD {//位图调色板项 public byte rgbBlue; public byte rgbGreen; public byte rgbRed; public byte rgbReserved; }
利达光电股份有限公司 | 彭军 5
2010 年 4 月 23 日
位图位数的转换
return; } if (tbxDirectory.Text.Trim() == tbxSaveDir.Text.Trim()) { MessageBox.Show("两个目录不能相同!", "错误"); return; } progressBar1.Value = 0; progressBar1.Minimum = 0; progressBar1.Maximum = files.Length; for (int i = 0; i < files.Length; i++) { ListViewItem lvi = listView1.Items[i]; UInt16 choose = Convert.ToUInt16(cbxBitCount.Text.Trim().ToString()); string savepath=tbxSaveDir.Text.Trim() +"\\"+ GetFileName(lvi.SubItems[0].Text.Trim()); NeverBitmap nb = new NeverBitmap(lvi.SubItems[0].Text.Trim(),savepath); if (lvi.SubItems[1].Text == cbxBitCount.Text) { progressBar1.Value++; lvi.SubItems[0].Text += " 无需转换"; continue; } else if (lvi.SubItems[1].Text == "8") { switch (choose) { case 24: nb.Bit8To24(); break;
利达光电股份有限公司
位图位数的转换
用 VC#2008 实现
彭军
2010
可以实现: 8 位到 24 位、8 位到 32 位的转换 24 位到 8 位、24 位到 32 位的转换 32 位到 8n@
河 南 省 南阳 市 工业 南路 50 8 号
2010 年 4 月 23 日
位图位数的转换利达光电股份有限公 Nhomakorabea | 彭军
2
2010 年 4 月 23 日
位图位数的转换
Form1.cs 的全部程序: using System; using System.Collections.Generic; using ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace BitmapConverter { public partial class Form1 : Form { FileInfo[] files = null; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e)
利达光电股份有限公司 | 彭军 7
2010 年 4 月 23 日
位图位数的转换
lvi.SubItems[0].Text += " 完成"; } } private void tbxSaveDir_Click(object sender, EventArgs e) { //设置保存目录,不能和原目录一致 FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() != DialogResult.OK) return; tbxSaveDir.Text = fbd.SelectedPath; } } } BitmapInfo.cs 的全部程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Imaging; namespace BitmapConverter { class BitmapInfo { Bitmap bmp = null; public BitmapInfo(string path) { bmp = new Bitmap(path); } public int GetWidth()
利达光电股份有限公司 | 彭军 8
2010 年 4 月 23 日
位图位数的转换
{//返回位图宽度 if (bmp==null) return -1; return bmp.Width; } public int GetHeight() {//返回位图高度 if (bmp==null) return -1; return bmp.Height; } public int GetBitCount() {//返回位图位数 if (bmp.PixelFormat == PixelFormat.Format24bppRgb) return 24; else if (bmp.PixelFormat == PixelFormat.Format32bppRgb || bmp.PixelFormat == PixelFormat.Format32bppPArgb || bmp.PixelFormat == PixelFormat.Format32bppArgb) return 32; else if (bmp.PixelFormat == PixelFormat.Format8bppIndexed) return 8; else return -1; } } } NeverBitmap.cs 的全部程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing.Imaging; using System.Drawing; using System.IO;
利达光电股份有限公司 | 彭军 3
2010 年 4 月 23 日
位图位数的转换
{ //设置窗口的大小不可变 this.MinimumSize = this.Size; this.MaximumSize = this.Size; //设置默认转换为24位位图 cbxBitCount.SelectedIndex = 1; } //列出当前目录下位图文件 private void ListBmpFiles() { try { DirectoryInfo di = new DirectoryInfo(tbxDirectory.Text.Trim()); files = di.GetFiles("*.bmp"); foreach (FileInfo f in files) { ListViewItem lvi = listView1.Items.Add(f.FullName); BitmapInfo bi = new BitmapInfo(f.FullName); lvi.SubItems.Add(bi.GetBitCount().ToString()); lvi.SubItems.Add(bi.GetHeight().ToString()); lvi.SubItems.Add(bi.GetWidth().ToString()); } } catch (Exception e) { MessageBox.Show(e.Message, @"错误"); return; } } private void tbxDirectory_Click(object sender, EventArgs e) { //选择需转换的位图文件所在的目录
利达光电股份有限公司 | 彭军 4
2010 年 4 月 23 日
位图位数的转换
FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() != DialogResult.OK) return; tbxDirectory.Text = fbd.SelectedPath; listView1.Items.Clear();//清空ListView中的内容 progressBar1.Value = 0;//还原进度条 ListBmpFiles(); } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } //从路径中分割出文件名 private string GetFileName(string path) { string[] parts = path.Split('\\'); return parts[parts.Length - 1]; } private void btnStart_Click(object sender, EventArgs e) { if (cbxBitCount.Text.Trim() == "") { MessageBox.Show("请选择转换后的位图位数!", "错误"); return; } if (tbxDirectory.Text.Trim() == "") { MessageBox.Show("请选择位图所在的目录!", "错误"); return; } if (files == null || files.Length == 0) { MessageBox.Show("当前目录下没有位图!", "错误");