tag 标签: 补码

相关博文
  • 热度 27
    2013-4-15 14:57
    1487 次阅读|
    2 个评论
         近期刚学数电,课前预习时书本用了个钟表的运行来讲解。看了一会儿后感觉太复杂。后来看了看例题后认为下面的方法比较就简单。     首先,我们要知道这样一句真理(夸大了,呵呵!)“在计算机系统中,数值一律用补码表示(存储)”。并且,CPU只能进行二进制的加法运算,不能进行减法运算。     数字从某种程度上来说,只有正数和负数两种。正数的原码和补码一样,不用进行任何变换。正数的二进制代码就是其补码。     eg:7的二进制代码为:0000 0111.补码亦为:0000 0111。     其实负数的也不难。负数求补码的规律为:     负数的绝对值的原码 è 按位取反 è 加1得到补码形式。     eg:求-7的补码。         1、-7的绝对值为7.则7的原码为:0000 0111.         2、按位取反。即0变1,1变0. 变为:1111 1000.         3、加1得到补码。即 1111 1010 + 1 = 1111 1001.         所以,-7的补码为:1111 1001.
  • 热度 15
    2012-2-6 08:58
    1391 次阅读|
    0 个评论
    前面,我们给大家讲了部分单片机入门,今天我们继续为大家讲解单片机的基础知识 。 数字电路具有两种不同的稳定状态且能相互转换,用“0”和“1”表示比较方便。因此,计算机处理的一切信息包括数据,指令,字符等均用二进制数来表示。但是二进制数书写太长,且不便于阅读和记忆,所以微型计算机中的二进制数都采用十六进制数来缩写。 数的单位: 位(bit):一个二进制数中的1位。 字节(byte):一个字节,就是一个8位二进制数 字(word):两个字节,就是一个16位二进制数 双字:两个字,即4个字节 进制之间的相互转化 二进制数与十六进制数相互转化: 0001 1111 1100 0111B=1FC7H 3AB9H=0011 1010 1011 1001B 十六进制数与十进制数相互转换: 1F3DH= =7997 38947=9823H 计算机中的有符号数的表示 在计算机系统当中,符号是包括原码,反码,补码3种表示法。 原码:正数的符号位为“0”,负数的符号位为“1” 反码:正数的反码与原码相同,负数的反码,除了符号位不变,数值部分按位取反。   补码:正数的补码与原码相同,负数的补码为其反码加1   ü计算机中简单的加减法 在内部培训中,通过64-10=54对计算机中的简单加减法做了介绍 为了能够更方便的理解补码的作用,在这里对64-10做一下转换,变为64+(-10) 处理的方法是:先将64与-10求补码,然后就可以用加法的概念对公示进行相加运算。 ü8051单片机中断系统结构简介 标准的8051具有5个中断源,增强型8XX52具有6个中断源。当CPU相应中断时,硬件自动形成各自的入口地址,由此进入中断服务程序,从而实现了正确的转移。     中断控制的有关寄存器 在中断系统中,用户对中断的管理体现在以下两个方面: 中断能否进行,即对构成中断的双方进行控制,这个是是否允许中断源发出中断和是否允许CPU相应中断,只有双方都允许,中断才能进行。 当有多个中断源有中断请求时,用户控制CPU按照自己的需要安排响应次序。 中断控制寄存器IE:   中断请求表示及外部中断方式选择寄存器TCON:     中断优先级管理寄存器IP:   中断的响应过程 中断处理过程分为4个阶段:中断请求,中断响应,中断服务和中断返回。8051单片机的中断过程流程图如下:   未完待续。   如果您有什么疑问请留言或者来信:wiznetbj@wiznettechnology.com,希望本篇文章可以给您带来帮助,谢谢。
  • 热度 22
    2012-1-5 21:33
    3036 次阅读|
    4 个评论
    FPGA中数值的计算都是以补码形式进行的。因为对于机器而言,他们只能识别数值0和1,而不能像人脑那样判断符号位,然后判断正负再进行计算。对于原码,补码,反码可以在我收录的一篇文章中学习: http://bbs.ednchina.com/BLOG_ARTICLE_2114396.HTM 以下我写了个程序来验证数值绝对值的比较: module minus_judge(clk,rst,                    dina,dinb,                    result);                     input clk,rst; input dina,dinb; output result; reg result; reg dina_r,dinb_r; //计算数据的绝对值 always@(posedge clk or negedge rst) begin     if(!rst) begin dina_r = 0; dinb_r = 0; end     else begin         if(dina ==1) dina_r = ~(dina-1'b1);         else dina_r = dina;         if(dinb ==1) dinb_r = ~(dinb-1'b1);         else dinb_r = dinb;     end end //比较绝对值大小 always@(*) begin    if(dina_r =dinb_r ) result = 1;    else result = 0; end endmodule      其中的仿真数据输入可以借用verilog的读数据函数readmemh("filename.txt",datamenm)。以16进制读取,个人感觉这样比较方便,16进制显示MATLAB产生也方便。对于负数,在输入时候可以是最高位取反,具体算法是比如我们要产生12位的数据,最高位为符号位,则数据为负数时候需要加上2^12,使得最高位取反,在modelsim中可以以decmal形式查看数据波形。 以下是我的功能仿真图:        
相关资源
  • 所需E币: 1
    时间: 2020-12-18 16:42
    大小: 179KB
    上传者: zendy_731593397
    4561CMOS“9”补码电路
  • 所需E币: 5
    时间: 2019-12-25 23:02
    大小: 116.97KB
    上传者: wsu_w_hotmail.com
    TMS320C25是TI(TEXASINSTRUMENT)公司的16位数字信号处理器,它在结构上采用程序存储器和数据存储器分开寻址的哈佛结构,允许取指令和执行指令全部重叠进行。该DSP内含544个字的RAM,4k字的程序存储器ROM,用掩膜方法放置在内部ROM中的程序可以全速运行。TMS320C25内含32位乘法器,可以单指令周期完成16×16位2的补码数相乘,这对诸如卷积等DSP基本算法是有效的。另外,它与专用的DSP指令系统相结合能提高速度和灵活性,每秒执行的指令可达10M条。……
  • 所需E币: 5
    时间: 2019-12-25 12:06
    大小: 77.5KB
    上传者: 238112554_qq
    数与编码§1.2计算机中数的表示方法与编码1.进位计数制在计算机系统中,采用的是二进制计数,而在日常生活中,我们熟知的是十进制计数,我们首先介绍进位计数的有关概念。⒈十进制计数大约公元400年,印度人发明了十进制计数,这可能与我们的手指有关。公元800年,阿拉伯人开始使用十进制计数,后来又传入欧洲,十进制计数有以下特点:1.有十个相互独立的数字:0,1,2,3,4,5,6,7,8,9;2.逢十进一;3.权为10n任一十进制数:N=αn-1αn-2┅α1α0.α-1α-2┅α-mN=αn-1·10n-1+αn-2·10n-2+┅+α1·101+α0·100+α-1·10-1+α-2·10-2+┅+α-m·10-m⒉二进制计数(用B表示)计算机中普遍采用二机制计数,其特点为:1.有两个独立的数字:0和1;2.逢二进一;3.权为2n;任一二进制数:N=αn-1αn-2…α1α0.α-1α-2…α-mN=αn-1·2n-1+αn-2·2n-2+…+α1·21+α0·20+α-1·2-1+α-2·2-2+…+α-m·2-m如:11111111.1=1·27+1·26+1·25+1·24+1·23+1·22+1·21+1·20+1·2-1=128+64+32+16+8+4+2+1+0.5=255.5⒊十六进制计数(用H表示)特点:十六个独立的数字:0123456789ABCDE……