计算机数制编码,计算机编码和数制 -电脑资料-程序员宅基地

技术标签: 计算机数制编码  

数制数制定义

按进位的原则进行计数,称为进位计数制,简称"数制",生活中经常要用到数制,通常以十进制进行计数,除了十进制计数以外,还有许多非十进制的计数方法。例如,60分钟为1小时,用的是60进制计数法;1星期有7天,是7进制计数法;1年有12个月,是12进制计数法。当然,在生活中还有许多其他各种各样的进制计数法。

在计算机系统中采用二进制,其主要原因是由于电路设计简单、运算简单、工作可靠、逻辑性强。不论是哪一种数制,其计数和运算都有共同的规律和特点。

逢N进一

N是指数制中所需要的数字字符的总个数,称为基数。例如,十进制数用0、1、2、3、4、5、6、7、8、9等10个不同的符号来表示数值,这个10就是数字字符的总个数,也是十进制的基数,表示逢十进一。

位权表示法

位权是指一个数字在某个固定位置上所代表的值,处在不同位置上的数字符号所代表的值不同,每个数字的位置决定了它的值或者位权。而位权与基数的关系是:各进位制中位权的值是基数的若干次幂。因此,用任何一种数制表示的数都可以写成按位权展开的多项式之和。如十进制数"634.28"可以表示为:

(634.08)10=6(10)2+3(10)1+4(10)0+0(10)-1+8(10)-2

位权表示法的原则是数字的总个数等于基数;每个数字都要乘以基数的幂次,而该幂次是由每个数所在的位置所决定的。排列方式是以小数点为界,整数自右向左0次方、1次方、2次方、,小数自左向右负1次方、负2次方、负3次方、。

常用的数制

日常生活中使用的数制有很多种,在计算机中采用二进制。由于二进制数与八进制数和十六进制数具有特殊的关系,所以在计算机应用中常常根据需要使用八进制数或十六进制数。

十进制数:逢十进一,由数字0~9组成。

二进制数:逢二进一,由数字0、1组成。

八进制数:逢八进一,由数字0~7组成。

十六进制数:逢十六进一,由数字0~9、A~F组成。

常用数制的基数和数字符号

基数十进制二进制八进制十六进制

数字符号0~90,10~70~9,A,B,C,D,E,F

数制间的转换

将数由一种数制转换成另一种数制称为数制间的转换。由于计算机采用二进制,但用计算机解决实际问题时对数值的输入输出通常使用十进制,这就有一个十进制向二进制转换或由二进制向十进制转换的过程。也就是说,在使用计算机进行数据处理时首先必须把输入的十进制数转换成计算机所能接受的二进制数;计算机在运行结束后,再把二进制数转换为人们所习惯的十进制数输出。这两个转换过程完全由计算机系统自动完成不需人们参与。

余数法

十进制整数转换成非十进制整数时采用余数法:用十进制整数除基数,当商是0时,将余数由下而上排列。

进位法

十进制小数转换成非十进制小数时采用进位法:用十进制小数乘基数,当积值为0或达到所要求的精度时,将整数部分由上而下排列。

位权法

非十进制数转换成十进制数时采用位权法:把各非十进制数按权展开求和。

转换公式:(F)10=a1xn-1+a2xn-2+...+am-1x1+amx0+am+1x-1+..,计算机编码和数制》(https://www.unjs.com)。

二进制数与八进制、十六进制数之间的转换方法

注意:整数从右向左、小数从左向右

例题1:将二进制数100110110111.00101转换成八进制数。

结果:(100110110111.00101)2=(4667.12)8

例题2:将八进制数604.05转换成二进制数。

结果:(604.05)8=(110000100.000101)2

例题3:将二进制数11011010101转换成十六进制数。

结果:(11011010101)2=(6D5)16

例题4:将十六进制数F05D.7A1转换为二进制数。

结果:(F05D.7A1)16=(1111000001011101.011110100001)2

数值型数据在计算机中的表示方式

计算机处理的数据分为数值型和非数值型两类。数值型数据指数学中的代数值,具有量的含义,且有正负之分、整数和小数之分;而非数值型数据是指输入到计算机中的所有信息,没有量的含义,如数字符号0~9、大写字母A~Z或小写字母a~z、汉字、图形、声音及其一切可印刷的符号+、-、!、#、%、》等。由于计算机采用二进制,所以输入到计算机中的任何数值型和非数值型数据都必须转换为二进制。

任何一个非二进制整数输入到计算机中都必须以二进制格式存放在计算机的存储器中,且用最高位作为数值的符号位,并规定二进制数"0"表示正数,二进制数"1"表示负数,每个数据占用一个或多个字节。这种连同数字与符号组合在一起的二进制数称为机器数,由机器数所表示的实际值称为真值。

即:

机器数的表示方法

在计算机中,机器数也有不同的表示方法,通常用原码、反码和补码三种方式表示,其主要目的是解决减法运算。任何正数的原码、反码和补码的形式完全相同,负数则各自有不同的表示形式。

原码

正数的符号位用0表示,负数的符号位用1表示,数值部分用二进制形式表示,这种表示法称为原码。

反码

正数的反码和原码相同,负数的反码是对该数的原码除符号位外各位取反。

补码

正数的补码和原码相同,负数的补码是反码加1。

带小数点的数的表示方法

带小数点的数在计算机中用隐含规定小数点的位置来表示。根据小数点的位置是否固定,分为定点数和浮点数二种类型,相应的具有数的定点表示和浮点表示两种方式。

图示如下:

定点整数

定点整数是指小数点隐含固定在整个数值的最右,符号位右边所有的位数表示的是一个整数,最小数为1。

定点小数

定点小数是指小数点隐含固定在最高数据位的左边,最大数为0.1。

浮点数

浮点数是指小数点位置不固定的数,它既有整数部分又有小数部分,如123.55、33.789等。

注意:在计算机中通常把浮点数分成阶码和尾数两部分来表示,其中阶码一般用补码定点整数表示,尾数一般用补码或原码定点小数表示。为保证不损失有效数字,对尾数进行规格化处理,也就是平时所说的科学记数法,即保证尾数的最高位为1,实际数值通过阶码进行调整。

浮点数的格式多种多样,例如,某计算机用4个字节表示浮点数,阶码部分为8位补码定点整数,尾数部分为24位补码定点小数,如下图所示。

其中:阶符表示指数的符号位、阶码表示幂次、数符表示尾数的符号位、尾数表示规格化后的小数值。采用浮点数最大的特点是比定点数表示的数值范围大。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36165751/article/details/119233166

智能推荐

Java8 parallelStream——共享线程池对性能解析_jdk8 parallelstream 性能-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏8次。最近做压测中发现一个应用中cpu过高,导致接口超时rt情况有些不大稳定,jstack打印线程一直在parallelStream相关的代码出进行计算。故对parallelStream相关做一下研究,找一下优化方法。java8并行流parallelStream,相信很多人都喜欢用,特别方便简单。但是有多少人真正知道里面采用的共享线程池对密集型任务,高并发下的性能影响呢可能你的一个应用里面..._jdk8 parallelstream 性能

C++ 11 创建和使用 unique_ptr_unique_ptr创建空节点-程序员宅基地

文章浏览阅读292次。https://www.cnblogs.com/DswCnblog/p/5628195.htmlunique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议..._unique_ptr创建空节点

NetCoreAPI配置全局路由_selector.attributeroutemodel.template-程序员宅基地

文章浏览阅读853次。1:新增类:RouteConvention,继承自IApplicationModelConvention/// <summary> /// 全局路由前缀配置 /// </summary> public class RouteConvention : IApplicationModelConvention { /// <summary> /// 定义一个路由前缀变量 /// </su_selector.attributeroutemodel.template

算 数-程序员宅基地

文章浏览阅读64次。从woody那里copy一段最简的fib代码[code="ruby"]x,y = 0,1 Array.new(10) {|i| [0,1].include?(i) ? 1 : (x,y = y,x+y)&&(x+y) } [/code]生成了这么多,太多了,中途终止了,不知道多少条。[code="ruby"] 1, 1, 2, ..._359579325206583560961765665172189099052367214309267232255589801

Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行!-程序员宅基地

文章浏览阅读280次。本文原题“从实践角度重新理解BIO和NIO”,原文由Object分享,为了更好的内容表现力,收录时有改动。1、引言这段时间自己在看一些Java中BIO和NIO之类的东西,也看了很多博客,发现各种关于NIO的理论概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,发现自己对NIO还是一知半解、一脸蒙逼的状态(请原谅我太笨)。基于以上原因,..._java bio粘包处理

Python3.9环境搭建RobotFramework_python-3.9.9-amd64用那个版本ride-程序员宅基地

文章浏览阅读9k次,点赞2次,收藏12次。Robot Framework是一个基于Python的,可扩展的关键字驱动的测试自动化框架,用于端到端验收测试和验收测试驱动开发(ATDD)。_python-3.9.9-amd64用那个版本ride

随便推点

Hbase相关操作_hbase 查询-程序员宅基地

文章浏览阅读2.4k次。1.进入shellhbase(main):003:0>hbase shell2.查看所有表hbase(main):003:0> list3.根据rowKey查询某个记录hbase(main):003:0>get '表名','rowKey'4.常用过滤器过滤方式是通过value过滤,匹配出value含7259的数据。scan 'buss_surface', FILTER=>"ValueFilter(=,'substring:7259')"过滤方式是通_hbase 查询

噪声:Practical Poissonian-Gaussian noise modeling and fitting for single-image raw-data-程序员宅基地

文章浏览阅读2k次,点赞4次,收藏16次。Practical Poissonian-Gaussian noise modeling and fitting for single-image raw-data文章目录Practical Poissonian-Gaussian noise modeling and fitting for single-image raw-dataPoissonian-Gaussian ModelingThe Noise Profile AlgorithmWavelet domain analysisSegmentat_practical poissonian-gaussian noise modeling and fitting for single-image ra

计算机开机最快设置,w7提高开机速度如何操作_win7电脑怎么开机更快-程序员宅基地

文章浏览阅读4k次。由于win7电脑使用时间过长或者存放时间久了,难免会出现硬件各方面的老化或者堆积了大量的垃圾,因此就会导致电脑开机时的速度有所降低,对此有些用户就想,在不更换硬件的条件下,有没有方法能够提高一下开机速度,那么win7电脑提高开机速度如何操作呢?这里小编就来告诉大家win7电脑开机更快操作步骤。具体方法:1、在任意界面按下:windows键+R,然后在框内输入msconfig,点确定2、然后选择“启..._如何提高w7系统的开机速度

1688API接口:item_search - 按关键字搜索商品_1688 一件代发 api-程序员宅基地

文章浏览阅读672次。今天分享的是1688平台API,item_search - 按关键字搜索商品接口1688的API开发接口,我们需要做下面几件事情。1)开放平台注册开发者账号;2)然后为每个1688应用注册一个应用程序键(App Key) ;3)下载1688API的SDK并掌握基本的API基础知识和调用;4)利用SDK接口和对象,传入AppKey或者必要的时候获取并传入SessionKey来进行程序开发;5)利用1688平台的文档中心和API测试工具,对接口进行测试。从而了解返回信息,方便程序获取1688_1688 一件代发 api

vue-property-decorator使用指南_vue-property-decorator emit update-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。在Vue中使用TypeScript时,非常好用的一个库,使用装饰器来简化书写。一、安装npmi-Svue-property-decorator@Prop @PropSync @Provide @Model @Watch @Inject @Provide @Emit @Component(provided byvue-class-component) Mixins(the helper function namedmixinsprovided byvue-cla..._vue-property-decorator emit update

(七)用ChartDirector绘制实时图表-程序员宅基地

文章浏览阅读467次。本示例演示如何用Web图表控件 ChartDirector 绘制一个配置有刷新率的实时图表。在本例中,由一个计时器驱动的随机数生成器生成新的数据值,新产生的值会转换到数据数组中,然后显示在图表上。图表由一个秒表进行更新,这样图表的刷新率可独立于数据率。此外,这个图表支持暂停以方便用户查看,但是后台的数据仍然在继续更新。图表刷新计时器调用CChartViewer.update..._c++ chartdirect updateviewport