Lecture 17

news2025/1/5 7:04:28

10’s Complement Representation

主要内容:

1. 10’s 补码表示:

• 10’s 补码表示法需要指定表示的数字位数(用  n  表示)。

• 表示的数字取决于  n  的位数,这会影响具体数值的解释。

2. 举例:

• 如果采用 3 位补码,数字 ‘567’ 代表  -433 。

• 原理:在 3 位补码中,范围是从  -10^3 / 2  到  10^3 / 2 - 1 ,即  -500  到  499 。数字超过正值范围就表示负值。

• 如果采用 4 位补码,数字 ‘0567’ 代表  567 。

• 因为此时正值范围是从 0 到  10^4 - 1 。

Addition

1. 使用 10’s 补码的加法操作:

• 对于 n 位数字,在补码表示中进行加法的规则是:

• 按 模  10^n  进行加法。

• 任何超过  n  位的进位都会被“丢弃”(舍弃最高位的进位)。

2. 核心规则:

模运算: 结果限制在指定的范围内(例如对于 3 位补码,模  1000 )。

• 使用标准加法规则,只需在最终结果中忽略多余的进位。

补充解释:

模运算的意义: 模运算确保结果始终在有效范围内。例如,在 3 位数运算中,进位舍弃后,结果仍然是 3 位数。

简化计算: 通过模运算和进位舍弃,复杂的减法和负数处理都能简化为加法。

 

Subtraction

1. 减法原理:

• 减去  B  相当于加上  -B ,即:

A - B = A + (-B)

2. 如何计算  -B :

•  -B  是  B  的 10’s 补码,即:

• 用  10^n - 1  减去  B 。

• 例如,若  B = 250 ,其补码  -B = 750 。

 

Overflow testing 

• Example.

– Codes: ‘347’ + ‘230’ = ‘577’.

– Values: 347 + 230 = - 423.

超出了 3 位补码的表示范围(-500 到 499)。

溢出检测的规则

• 如果两个加数的符号相同,但结果的符号不同,就发生了溢出。

Positive and Negative 

1. 10’s 补码范围分布:

• 在 10’s 补码系统中,正数和负数的表示范围是不均匀(unevenly)

• 这是因为 10’s 补码需要分配一个额外的数字给负的最小值(负数范围多一个值)。

2. 例子:

• 在 4 位补码系统中,可以表示的整数范围是:

-5000 -4999

• 负数范围为 -5000 到 -1,共 5000 个数。

• 正数范围为 0 到 4999,共 5000 个数。

• 这种不均匀分布是补码编码的固有特性。

Two’s Complement in 8 Bits

1. 二进制中的 2’s 补码:

• 对于 8 位二进制数(n=8),2’s 补码的表示类似于 10’s 补码,只是底数从 10 换成了 2。

范围:

• 从 - 2^7 = -128  到  2^7 - 1 = 127 。

2. 表示方法:

• 二进制编码如下:

• 从 10000000 表示最小的负数(-128)。

• 到 01111111 表示最大的正数(127)。

• 0 的编码是 00000000。

符号规则

以 0 开头的数字:

• 表示正数,直接用自然值。

• 如:00000101 表示 5。

以 1 开头的数字:

• 表示负数,其数值为补码形式。

• 如:11111101 表示 -3。

 求补码的方法

• 计算一个数字的 2’s 补码可以通过两种方法:

1. 模运算

从  2^n  减去数值。

2. 逐位取反加 1

取反:将所有位翻转(0 变 1,1 变 0)。

加 1:对取反后的值进行加 1 运算。

 例子:

• 数字 11011101:

• 逐位取反得到 00100010。

• 加 1 得到 00100011,即 -35。

Addition

1. 加法规则:

• 在 2’s 补码中,加法通过模运算  2^n  实现。

• 超出最高位的进位会被舍弃。

2. 例子:

• 011011 表示 27。

• 101100 表示 -20(负数补码形式)。

• 加法:

•  011011 + 101100 = 1000111 (有进位)。

• 舍弃最高位,结果是 000111,即 7。

 

Subtraction and Overflow

1. 减法的实现:

• 在 2’s 补码系统中,减法与 10’s 补码类似:

A - B = A + (-B)

• 这意味着减法可以通过先求负数  -B  的补码,然后与  A  直接相加来完成。

2. 溢出的检测:

• 如果两个加数的符号相同,但结果的符号不同,则发生了溢出。

Numerical Types in Java

1. Java 中的整数类型:

byte: 8 位整数,范围: -2^7  到  2^7 - 1 (即 -128 到 127)。

short: 16 位整数,范围: -2^{15}  到  2^{15} - 1 (即 -32,768 到 32,767)。

int: 32 位整数,范围: -2^{31}  到  2^{31} - 1 。

long: 64 位整数,范围: -2^{63}  到  2^{63} - 1 。

2. 补码表示法:

• Java 使用 2’s 补码表示法 来处理有符号整数。

Q&A

1. Addition for  n -digit numbers represented by 10’s complement is based on addition modulo  10^n ?”

• 答案:True

 n -位数的加法基于 模运算  10^n 

2.How is Overflow Detected?

溢出检测规则:

• 当两个数的符号相同,而结果的符号与加数符号不同,则发生溢出。

3. Can Overflow Result from Subtractions?

与加法类似:若两个操作数的符号相反,而结果符号与被减数  A  不同,则发生溢出

4. An int type under Java encodes integers under this range: -2³² — 2³² - 1?

实际表示范围是从 -2³¹ 到 2³¹ - 1

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

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

相关文章

惠州市政数局局长杨伟斌:惠州市公共数据授权运营模式探索

近期,2024数字资产管理大会召开。会上,惠州市政务服务和数据管理局局长杨伟斌在会上做了题为基于“隐私计算区块链”的惠州市公共数据授权运营模式探索主旨演讲,从三个方面展开,一是建制度汇数据,二是夯基础保安全&…

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网,在GitHub中文网上发现一个源码,里面有这个金鱼小应用,于是就下载下来,根据自己的C#架构模板进行了更改,最终形成了这个例子。 1、 项目目录; 2、 源码介绍; 1) 初始化; 将样…

探索贝叶斯魔法和误差的秘密

引言 今天我们要一起学习两个神秘的魔法概念:贝叶斯魔法和误差的秘密。这些概念听起来可能有点复杂,但别担心,我会用最简单的方式来解释它们。 一、贝叶斯魔法 贝叶斯魔法是一种预测的魔法,它帮助我们理解在不确定的情况下事情…

深度学习blog-卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于计算机视觉领域,如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成: 输入层:接收…

深度学习笔记(6)——循环神经网络RNN

循环神经网络 RNN 核心思想:RNN内部有一个“内部状态”,随着序列处理而更新 h t f W ( h t − 1 , x t ) h_tf_W(h_{t-1},x_t) ht​fW​(ht−1​,xt​) 一般来说 h t t a n h ( W h h h t − 1 W x h x t ) h_ttanh(W_{hh}h_{t-1}W_{xh}x_t) ht​tanh(Whh​ht−1​Wxh​xt…

最新版Edge浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

【前端,TypeScript】TypeScript速成(三):枚举类型

枚举类型 枚举类型是 TypeScript 相较于 JavaScript 而言特有的部分。一个简单的枚举声明如下: enum HTTPStatus {OK,NOT_FOUND,INTERNAL_STATUS_ERROR, }与编译成 JavaScript 的代码相比较: 显然 TypeScript 非常的简洁。 尝试使用上述枚举类型&…

Webpack学习笔记(6)

首先搭建一个基本的webpack环境: 执行npm init -y,创建pack.json,保存安装包的一些信息 执行npm install webpack webpack-cli webpack-dev-server html-webpack-plugin -D,出现node_modules和package-lock.json。 1.source-Ma…

Java高频面试之SE-06

hello啊,各位老6!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 访问修饰符 public、private、protected的区别是什么? 在Java中,访问修饰符用于控制类、方法和变量的访问权限。主要的访…

报表工具DevExpress Reporting v24.2亮点 - AI功能进一步强化

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 报表工具DevExpress Reporting v24.2将于近期发…

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…

MVCC实现原理以及解决脏读、不可重复读、幻读问题

MVCC实现原理以及解决脏读、不可重复读、幻读问题 MVCC是什么?有什么作用?MVCC的实现原理行隐藏的字段undo log日志版本链Read View MVCC在RC下避免脏读MVCC在RC造成不可重复读、丢失修改MVCC在RR下解决不可重复读问题RR下仍然存在幻读的问题 MVCC是什么…

自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

完成了文本识别和人脸检测的项目后,我发现人脸比对是一个更有趣的一个小技术玩意儿。我决定整一整,也就是对HarmonyOS Next最新版本API 13中的Core Vision Face Comparator API的学习,这项技术能够对人脸进行高精度比对,并给出相似…

代码解析:安卓VHAL的AIDL参考实现

以下内容基于安卓14的VHAL代码。 总体架构 参考实现采用双层架构。上层是 DefaultVehicleHal,实现了 VHAL AIDL 接口,并提供适用于所有硬件设备的通用 VHAL 逻辑。下层是 FakeVehicleHardware,实现了 IVehicleHardware 接口。此类可模拟与实…

通过 Ansys Electronics Desktop 中的高级仿真优化 IC 设计

半导体行业继续通过日益复杂的集成电路 (IC) 设计突破技术界限。随着工艺节点缩小和电路密度达到前所未有的水平,电磁效应对设备性能和可靠性变得越来越重要。现代 IC 设计面临着来自复杂的布局相关耦合机制、信号完整性问题和功率分布问题的挑战,这些问…

Kafka数据迁移全解析:同集群和跨集群

文章目录 一、同集群迁移二、跨集群迁移 Kafka两种迁移场景,分别是同集群数据迁移、跨集群数据迁移。 一、同集群迁移 应用场景: broker 迁移 主要使用的场景是broker 上线,下线,或者扩容等.基于同一套zookeeper的操作。 实践: 将需要新添加…

【OpenGL ES】GLSL基础语法

1 前言 本文将介绍 GLSL 中数据类型、数组、结构体、宏、运算符、向量运算、矩阵运算、函数、流程控制、精度限定符、变量限定符(in、out、inout)、函数参数限定符等内容,另外提供了一个 include 工具,方便多文件管理 glsl 代码&a…

ffmpeg之播放一个yuv视频

播放YUV视频的步骤 初始化SDL库: 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 创建窗口用于显示YUV视频: 目的:…

复习打卡大数据篇——Hadoop MapReduce

目录 1. MapReduce基本介绍 2. MapReduce原理 1. MapReduce基本介绍 什么是MapReduce MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。 MapRed…