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

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

相关文章

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

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