三种机器数,原码,补码,反码

2024-05-04 08:18

本文主要是介绍三种机器数,原码,补码,反码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     计算机中的数均放在寄存器中,通常称寄存器的位数为机器字长。

     无符号数:即没有符号的数,在寄存器中每一位均可用来存放数值。

     有符号数:即有符号的数,在寄存器中需要留出相应的位置来存放符号位。

  

      因此,即使寄存器的位数相同,甚至是在同一个寄存器中,所能表示的无符号数和有符号数的数值范围是不同的。对于同一串二进制码来说,看成有符号数,无符号数,原码,补码,正常来说,换算成十进制都是不一样的,而看成是哪一种码,则是由程序员来规定的。

 

原码:原码是机器数中最简单的一种表示形式,符号位为0的表示正数,符号位为1表示负数,数值位即真值的绝对值,故原码表示又称为带符号的绝对值表示。

 

整数原码的定义:

        [x]原= 0,x  (2^n >x>=0)  

        [X]原 =2^n-x( 0>=x>-2^n)

 例子:

          当x=+1110 时,[x]原=0,1110

          当 x=-1110 时,[x]原 =2^4-(-1110)=1,1110 (用逗号将符号位和数值部分隔开)

 

   小数的原码定义:

         [x]原=x  (1>x>=0)   

         [x]原=1-x (0>=x>-1)

例子:

          当x=0.1101 时, [x]原=0.1101

          当x=-0.1101 时, [x]原=1-(-0.1101)=1.1101

根据以上的定义,如果已知原码,很显然就可以求真值了。

 

补码:补码的出现时为了更好的实现数值运算,因为如果用原来来计算你必须先确定数的正负,绝对值大小等。(大家可以去搜索一下补码是怎么来的,或者搜索一下补数的概念。)

整数补码的定义:

         [x]补=0,x  (2^n>x>=0)

         [x]补=2^(n+1)+x (0>x>-2^n)注意和原码的区别

例子:

         当 x=+1010 时, [x]补=0,1010

         当 x=-1101 时,[x]补=2^(n+1)+x =10000-1101=1,0011

小数的补码定义:

          [x]补= x  (1>x>=0)

          [x]补=2+x (0>x>=-1)

例子:

            当 x=0.1001 时, [x]补=0.1001

            当 x=-0.0110 时,[x]补=2+x=10.0000-0.0110=1.1010

 

反码 :反码通常用来作为由原码求补码或者由补码求原码的中间过渡。

     整数反码的定义:

          [x]反=0,x (2^n>x>=0)

          [x]反=(2^(n+1)-1)+x (x>=0>-2^n)

例子:

        当 x=+1101时,[x]反=0.1101

        当 x=-1101 时,[x]反=100000-1-1101=1,0010

   小数反码的定义:

        [x]反=x  (1>x>=0)

       [x]反=(2-2^(-n))+x  (0>=x>-1)

例子:

        当 x=+0.0110时,  [x]反=0.0110

        当 X=-0.0110时,  [x]反=10.0000-0.0001-0.0110=1.1001

 

PS:补码比原码,反码能多表示一个数 “-1”,请问这是为什么,提示:从”0”下手。

参考书籍:《计算机组成原理》作者:唐朔飞 , 高等教育出版社第二版

 

 

这篇关于三种机器数,原码,补码,反码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958735

相关文章

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学