计算机组成原理 第五章(计算机的运算方法)—第一节(无符号数和有符号数)

写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、无符号数

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

        所谓无符号数,即没有符号的数,在寄存器中的每一位均可用来存放数值。(通常只有无符号整数,没有无符号小数的说法)

        在机器字长相同时,无符号数与有符号数所对应的数值范围是不同的,因为有符号数需要预留一个位作为符号位。以机器字长为16位为例,无符号数的表示范围为0~65535(0\sim 2^{16}-1),有符号数的表示范围为-32768~32767(-2^{15}\sim 2^{15}-1)。

二、有符号数

1、机器数与真值

(1)对有符号数而言,符号的“正”、“负”机器是无法识别的,但由于“正”、“负”恰好是两种截然不同的状态,如果用“0”表示“正”、用“1”表示“负”,这样符号也被数字化了,并且规定将它放在有效数字的前面,即组成了有符号数

(2)有符号小数(二进制形式)在机器中的表示:

(3)有符号整数(二进制形式)在机器中的表示:

2、原码表示法

(1)原码是机器数中最简单的一种表示形式,符号位为0表示正数,符号位为1表示负数,数值位即真值的绝对值,故原码表示又称为带符号的绝对值表示。上面列举的4个真值所对应的机器数即为原码。为了书写方便以及区别整数和小数,约定整数的符号位与数值位之间用逗号隔开,小数的符号位与数值位之间用小数点隔开。

(2)整数原码的定义(x为真值,n为整数的位数):

(3)小数原码的定义(x为真值):

(4)需要注意的是,原码中的“零”有两种表现形式,即“正0”和“负0”,它们的二进制形式是不一样的,区别就在符号位上。

3、补码表示法

(1)原码表示简单明了,并易于和真值转换,但用原码进行加减运算时却带来了许多麻烦,例如当两个操作数符号不同且要做加法运算时,需要先要判断两数绝对值大小,然后将绝对值大的数减去绝对值小的数,结果的符号以绝对值大的数为准,运算步骤既复杂又费时,而且本来是加法运算却要用减法器实现,如果能找到一个与负数等价的正数来代替该负数,就可把减法操作用加法代替,而机器数采用补码时,就能满足此要求。

(2)整数补码的定义(x为真值,n为整数的位数):

(3)小数补码的定义(x为真值):

(4)需要说明的是,补码中的“零”只有一种表示形式

(5)求补码的快捷方式:当真值为负时,补码可用原码除符号位外的每位取反,然后末位加1求得;当真值为正时,补码即原码

4、反码表示法

(1)反码通常用来作为由原码求补码或者由补码求原码的中间过渡,当真值为负时反码可用原码除符号位外的每位取反求得,当真值为正时反码即原码

(2)整数反码的定义(x为真值,n为整数的位数):

(3)小数反码的定义(x为真值):

5、移码表示法

(1)当真值用补码表示时,由于符号位和数值部分一起编码,与习惯上的表示法不同,因此人们很难从补码的形式上直接判断其真值的大小,为此又出现了移码。

(2)移码的定义:

(3)其实移码就是在真值上加一个常数2^{n},在数轴上移码所表示的范围恰好对应于真值在数轴上的范围向轴的正方向移动2^{n}个单元。

①最小真值的移码全为“0”。

②当浮点数的阶码用移码表示时,可以很方便地判断阶码的大小。

③同一个真值的移码和补码仅差一个符号位,若将补码的符号位由“0”改为“1”,或从“1”改为“0”,即可得到该真值的移码

6、有符号数的扩展

(1)一个有符号数可以用较少的二进制位表示(前提是在表示范围内,例如8位二进制数不能表示65535,可以表示64),也可以用较多的二进制位表示,增加有符号数的表示位数(比如原本用8位二进制代码表示,现在用16位二进制代码表示),这个过程称为有符号数的扩展。

(2)定点整数的符号扩展:在原符号位和数值位的中间添加新位,真值为正的话无论原码、补码或反码都添“0”,真值为负的话,原码添“0”,反码和补码都添“1”

(3)定点小数的符号扩展:原符号位和数值位后面添加新位,真值为正的话无论原码、补码或反码都添“0”,真值为负的话,原码添“0”,反码和补码都添“1”

负整数

负整数扩展结果

负小数

负小数扩展结果

原码

1,1011010

1,0000000 01011010

1.1011010

1.1011010 00000000

反码

1,0100101

1,1111111 10100101

1.1011011

1.1011011 11111111

补码

1,0100110

1,1111111 10100110

1.1011110

1.1011110 00000000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869366.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

zookeeper快速入门一:zookeeper安装与启动

本文是zookeeper系列之快速入门中的第一篇,欢迎大家观看与指出不足。 写在前面: 不影响教程,笔者安装zookeeper用的是WSL(windows下的linux子系统),当然你想直接在windows上用zookeeper也是可以的。 如果你也想用ws…

高效使用 JMeter 生成随机数:探索 Random 和 UUID 算法

在压力测试中,经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值,本文来具体介绍一下。 随机数函数 JMeter 提供了多个用于生成随机数的函数,其中最常用的是__Random函数。该函数可以生成一个指定范围内的随机整数或浮…

基于FPGA的光纤通信系统设计

文章目录 光纤通信系统的组成发送端FPGA端口定义状态机设计代码示例 接收端功能模块端口定义状态机设计 光纤通信系统的组成 发送端FPGA 发送控制逻辑、数据编码、校验码生成、缓存控制、时钟控制 端口定义 状态机设计 代码示例 接收端功能模块 接收端控制逻辑、数据解码、…

线性表——带头循环双向链表的增删查改

本节复习带头循环双向链表的增删查改。 带头循环双向链表的结构很完美, 是我们日常生活中使用最多的一种链表的形式。 但是考的频率要少于单链表。 目录 双链表的全部接口 准备文件 建立双链表的结构体蓝图 创建返回链表的头节点 申请新节点函数接口 双向链表…

Uniapp有奖猜歌游戏系统源码,附带流量主

有奖猜歌游戏是一款基于uni-app、uniCloud、uniAD 开发的小游戏,通过猜歌曲、观看广告赚取现金奖励。 游戏基本特征 玩家可以通过猜歌、做任务等方式直接获取现金奖励 玩家可以通过猜歌、拆红包、做任务等方式获取金币奖励,当金币累积到一定数量可以兑…

9.用FFmpeg测试H.264文件的解码时间

1. Essence of Method 要测试对H.264文件的解码时间,可以使用FFmpeg进行操作。FFmpeg是一个开源的多媒体处理工具,可以用来处理视频和音频文件,包括解码H.264文件。以下是使用FFmpeg的命令行来测试解码时间的方法: ffmpeg -i in…

Java高级互联网架构师之路:排查当前JVM错误的步骤

程序 这个程序是有问题的,我们通过一些命令来分析这个程序究竟是哪里出了问题。首先把当前的程序通过SSH工具传输到centos系统中,之后我们就可以在linux环境下编译和执行。 注意一点:上面类的名字是Z,但是在linux环境下,我们将其改为了AA,并且文件名改为了AA,所以文章下…

GiT: Towards Generalist Vision Transformer through Universal Language Interface

GiT: Towards Generalist Vision Transformer through Universal Language Interface 相关链接:arxiv github 关键字:Generalist Vision Transformer (GiT)、Universal Language Interface、Multi-task Learning、Zero-shot Transfer、Transformer 摘要 …

Java项目:57 ssm011线上旅行信息管理系统ssm+vue

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本线上旅行信息管理系统,主要实现了用户功能模块和管理员功能模块两大部分 用户可查看旅行相关信息,注册登录后还可实…

简易版 RPC 框架实现 2.0 -netty实现

这一篇理解如果有难度,可能对netty不是很理解, 可以关注我netty专栏,还有另外一篇: 用 Netty 自己实现简单的RPC, 这一篇是学习netty的时候写的,更倾向于分析netty相关的知识, 今天我是学习dubb…

java:Druid工具类解析sql获取表名

java&#xff1a;Druid工具类解析sql获取表名 1 前言 alibaba的druid连接池除了sql执行的功能外&#xff0c;还有sql语法解析的工具提供&#xff0c;参考依赖如下&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</ar…

使用paho.mqtt.client实现MQTT Client连接物联网平台(ThingsCloud)

目录 概述 1 ThingsCloud平台上创建项目 1.1 创建项目 1.2 配置App UI 2 认识paho.mqtt.client 3 实现MQTT Client 3.1 实现的接口介绍 3.2 paho.mqtt.client库函数介绍 3.3 MQTT Client类实现 3.3.1 创建项目 3.3.2 编写MQTT Client类代码 3.3.3 Log工具源码 4 实…

客户端:Vue3,服务端:Node,基于Socket.IO实现单聊的功能

目录 1.介绍 2.环境搭建 3.本功能实现的主要逻辑 4.客户端和服务端的主要代码 5.效果展示 6.socket.io的运作原理 1.介绍 本篇主要讲讲基于Socket.IO实现单聊功能的主要实现&#xff0c;包括了客户端和服务端Node。 在这个即时通讯无处不在的时代&#xff0c;实时聊天功能…

Java面试题总结18之springcloud四种分布式事务解决方案

XA规范&#xff1a;分布式事务规范&#xff0c;规定了分布式事务模型 四个角色&#xff1a;事务管理器&#xff08;协调者TM&#xff09;&#xff0c;资源管理器&#xff08;参与者RM&#xff09;&#xff0c;应用程序AP&#xff0c;通信资源管理器CRM 全局事务&#xff1a;一…

【Hadoop大数据技术】——MapReduce分布式计算框架(学习笔记)

&#x1f4d6; 前言&#xff1a;MapReduce是Hadoop系统核心组件之一&#xff0c;它是一种可用于大数据并行处理的计算模型、框架和平台&#xff0c;主要解决海量数据的计算问题&#xff0c;是目前分布式计算模型中应用较为广泛的一种。 目录 &#x1f552; 1. MapReduce概述&am…

JVM学习-JMM

目录 1.什么是JMM 2.JMM怎样保障数据的可见性、有序性、原子性 2.1保证原子性 2.2.保证可见性 2.3保证有序性 3.CAS 3.1乐观锁和悲观锁 3.2 CAS介绍 4.重量级锁的自旋优化 1.什么是JMM JMM即Java内存模型 &#xff0c;定义了一套在多线程读写共享数据&#xff08;如数组、成…

贪心算法(算法竞赛、蓝桥杯)--糖果传递

1、B站视频链接&#xff1a;A31 贪心算法 P2512 [HAOI2008] 糖果传递_哔哩哔哩_bilibili 题目链接&#xff1a;[HAOI2008] 糖果传递 - 洛谷 #include <bits/stdc.h> using namespace std; const int N1000005; int n,a[N],c[N]; long long b,ans;int main(){scanf(&quo…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:UIExtensionComponent (系统接口))

UIExtensionComponent用于支持在本页面内嵌入其他应用提供的UI。展示的内容在另外一个进程中运行&#xff0c;本应用并不参与其中的布局和渲染。 通常用于有进程隔离诉求的模块化开发场景。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0…

QT C++ QButtonGroup应用

//QT 中&#xff0c;按钮数量比较少&#xff0c;可以分别用各按钮的信号和槽处理。 //当按钮数量较多时&#xff0c;用QButtonGroup可以实现共用一个槽函数&#xff0c;批量处理&#xff0c;减少垃圾代码&#xff0c; //减少出错。 //开发平台&#xff1a;win10QT6.2.4 MSVC…

Xilinx FPGA模式配置

Xilinx FPGA模式配置 Xilinx UltraScale FPGA有7种配置模式&#xff0c;由模式输入引脚M[2:0]决定。七种模式如图1所示。 图1 7种配置模式 7种模式可分为3大类&#xff0c; 1、JTAG模式&#xff08;可归为从模式&#xff09;&#xff1b; 2、主模式&#xff1b; 3、从模式…