计算机体系结构(二)——码制

    现在很多程序员,只是会用计算机编程,但是许多基础的知识却很薄弱。今天就跟大家说说码制的问题。计算机对数据做的读取、传输、运算、显示等操作,都离不开码制。常见的编码方式有:原码、反码、补码、移码、BCD码。我们一一说道。

    【原码】

    表示:最高位为符号位(0表正,1表负),其余各位为数的绝对值。

    举例: [+11] =00001011  。 [-11] = 10001011 。

    范围:-127~+127

    优点:乘除法操作比较简单

    缺点:0有2种表示方法, [+0] =00000000, [-0] =10000000 。加减法运算可能会出现溢出错误。

    错误再现:(1)10 + (1)10 =  (0)10 ,用原码表示的: (00000001)2 + (10000001)= (10000010)=  (-2)10

    错误原因:原码的符号位不能直接参与运算,否则可能会出现错误。

    为了解决原码的加减法缺陷,引入了一个新的编码——反码。

    【反码】

    表示:由原码转换而来,正数跟原码一致;负数,符号位不变,其余各位按位取反。

    举例: [+11] = [+11] =00001011 。 [-11] =
11110100 。

    范围:-127~+127

    优点:符号位可以直接参与运算。减法可以变为加法运算。

    缺点:0有2种表示方法,  [+0]  =00000000,  [-0] =11111111 

    错误再现:(1)10 + (1)10 =  (0)10 ,使用反码的结果是: (00000001)2 + (11111110)= (11111111)=  (-0)10

 

    解决了加减法缺陷,还需要解决0编码的问题,遂又引入了一个新的编码——补码。

 

    【补码】

    表示:由反码转换而来,正数跟原码一致;负数,反码+1。

    举例: [+11] = [+11] =00001011 。 [-11]补 = 11110101 。

    范围:-128~+127

    优点:符号位可以直接参与运算。减法可以变为加法运算。0有唯一编码,  [+0] =[-0] =00000000 。

    现在 (1)10 + (1)10 =  (0)10 ,用补码表示的: (00000001)2 + (11111111)= (00000000)=  (0)10,结果正确。

    溢出判断:两个正数相加,如果符号位变为1,则溢出。两个负数相加,符号位变为了0,则溢出。正数+负数则不会溢出。

    【移码】

    表示:跟补码数值位一样,但符号位取反。

    举例: [+11] = 10001011 。 [-11]移 = 01110101 。

    范围:-128~+127

    【8421BCD码】

    表示:十进制数每位都用4位2进制数表示 。

    举例: 43 => 0100 0011 。

    优点:容易读数,二进制和十进制的转换快捷,适用于会计系统。

    溢出修正:结果>=9,则+6,进1 。如3+5:0011 + 0101 = 1000 正确。6+7:0110 + 0111 = 1101,结果需修正,1101+0110 = 10011 =(13)10 

 

 

时间: 2025-01-01 07:21:22

计算机体系结构(二)——码制的相关文章

计算机体系结构(一)——进制

    在学习计算机基础时,都会提到各种进制. R进制,就是逢R进1. 我们日常生活中常用的有十进制的数字,7进制的星期,12进制的时间,24进制时间.然而在计算机中则常用二进制,也只能识别二进制.今天就简单的说一下常用的进制之间的转换.       1. R进制转换为十进制.     口诀:按权展开,依次求和.     举例:          二进制1101.11转十进制             说明:(1)权值即为该位置的大小,比如说十进制的243,2所在位的权值为10的2次方,4所在位的

位置-有关计算机原理二维数组地址的问题

问题描述 有关计算机原理二维数组地址的问题 设有个一二维数组A[6][8]假设A[0][0]存放位置在1000每个元素占6个空间按行优先存储则A[3][6]的存储位置是多少? 解决方案 应该是1180,3*8+6,A[3][6]的首地址是6,不是7, 解决方案二: 应该是1186吧.(10个字符) 解决方案三: 1180,一共31个元素,(31-1)*6+1000 解决方案四: (A[0][7])7+ (A[3][7])8*3-1(A[3][6]) 解决方案五: typedef struct {

格式-分解二進制數字 n 成兩個數字 a(n), b(n) +

问题描述 分解二進制數字 n 成兩個數字 a(n), b(n) + Splitting Numbers(數字分解) 分解二進制數字 n 成兩個數字 a(n), b(n) 的定義如下: 若 0<= i1<i2<... <ik分別代表數字 n 中位元值為 1 的位元索引(最小索的引值為0). 然後數字 a(n) 中位元值為 1 的位元索引分別為i1, i3, i5, ... 以及數字 b(n) 中位元值為 1 的位元索引分別為i2, i4, i6, ... (與具有索引0的至少顯著位)

【更正】ISCA2016:计算机体系结构顶会CNN走红,神经网络论文夺桂冠

ISCA(The International Symposium on Computer Architecture)是计算机体系结构领域的顶级会议.自1973年创办以来,迄今已经举办了 43 届(1974 年空缺). 今年的 ISCA 于 6 月 18 日至 22 日在韩国首尔召开,这次会议有近 800 名来自世界各地的工业界和学术界的专家学者参加,在参会人数上创下历史新高.本届会议共收到了 291 篇投稿论文,最终录用了 57 篇,接收率为19.6%. ISCA的"C"成了CNN的&

《新编计算机科学概论》一第2章 计算机体系结构

第2章 计算机体系结构 本章重点讨论计算机体系结构.从体系结构上看,计算机系统包括硬件和软件两大部分.硬件是计算机系统的物质基础,软件是系统运行的灵魂,两者相辅相成,缺一不可.本章先从系统结构的角度介绍了计算机系统的层次结构,在讨论层次结构时引入了虚拟机的概念,虚拟机的引入有助于我们正确理解各种计算机语言的实质和实现途径,从而更好地进行计算机语言的研究和应用.本章还从体系结构的角度分析了系统硬件的结构,并重点讨论了处理器体系结构.最后在分析硬件结构的基础上,介绍了计算机软件系统的结构. 硬件部分

《新编计算机科学概论》一2.2  计算机体系结构概述

2.2 计算机体系结构概述 体系结构的概念是从软件设计者的角度对计算机硬件系统的观察和分析.结构是指各部分之间的关系.通过分析系统的组成和结构,可以指导更好地进行软件设计. 2.2.1 计算机体系结构的基本概念 计算机体系结构 计算机体系结构(computer architecture)通常是指程序设计人员所见到的计算机系统的属性,是硬件子系统的结构概念及其功能特性.经典的"计算机体系结构"定义是1964年C. M. Amdahl在介绍IBM 360系统时提出的. 按照计算机系统的多级

《C语言编程魔法书:基于C11标准》——第2章 学习C语言的预备知识 2.1 计算机体系结构简介

第2章 学习C语言的预备知识 我们在第1章已经大致介绍了C语言的概念以及编译.连接流程.我们知道C语言是高级语言中比较偏硬件底层的编程语言,因此对于用C语言的编程人员而言,了解一些关于处理器架构方面的知识是很有必要的,对于嵌入式系统开发的程序员而言更是如此了. 另外,C语言中有很多按位计算以及逻辑计算,所以对于初学者来说,如果对整数编码方式等计算机基础知识不熟悉,那么对这些操作的理解也会变得十分困难.因此,本章将主要给C语言初学者.同时也是计算机编程初学者,提供计算机编程中会涉及的基本知识,这样

《高性能科学与工程计算》——第1章 当代处理器1.1 存储程序的计算机体系结构

第1章 当代处理器 在1975-1995年的"旧时代"的科学计算时期,先进的高性能系统是专门为HPC市场设计的,主要的厂商有Cray.CDC.NEC.Fujitsu和Thinking Machines等.在性能和价格方面,这些系统远远超越了标准的"商品"电脑.20世纪70年代初发明的单芯片通用微处理器,是20世纪80年代末唯一足够成熟.可以打入HPC市场的技术.直到20世纪90年代末,标准的工作站集群甚至基于PC的硬件至少在理论峰值性能上才具备相应的竞争力.如今,情

linux系统编程基础(一) 计算机体系结构一点基础知识

无论是在CPU外部接总线的设备还是在CPU内部接总线的设备都有各自的地址范围,都可以像访问内存一样访问,很多体系结构(比如ARM)采用这种方式操作设备,称为内存映射I/O(Memory-mappedI/O).但是x86比较特殊,x86对于设备有独立的端口地址空间,CPU核需要引出额外的地址线来连接片内设备(和访问内存所用的地址线不同),访问设备寄存器时用特殊的in/out指令(汇编),而不是和访问内存用同样的指令,这种方式称为端口I/O(PortI/O). 在x86平台上,硬盘是挂在IDE.SA