计算机基础:编码03,根据十进制数,求其原码

news2025/3/22 7:37:01

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:计算机基础:编码02,有符号数编码,原码

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:计算机基础:编码02,有符号数编码,原码

回到目录

下一篇:无

本节前言

上一节,我讲解了原码的一点知识。本节,我继续来讲解关于原码的知识。

在上一节,我讲了,根据一个原码,来判断它所表示的十进制整数。本节,我们反过来,给定一个十进制整数,来求解其原码。

一.    根据十进制数求原码

在下面的讲解中,会涉及将十进制数转为对应的二进制数的知识。将十进制整数转为二进制数,需要采用除 2 取余法。如果你不会这个方法,请参考下面的链接所示的文章。

计算机基础:二进制基础04,十进整制数转化为二进制整数

在确保你已经学会了除 2 取余法之后,你可以接着往下学习本节的知识。

在上一节里面,我们讲了原码的结构。一个原码,它分为两个字段。无论这个原码是 8 位的,还是 16 位的,32 位的,还是 64 位的,它都是分为两个字段。最高位是一个字段,它是符号位。而其余位是另一个字段,数值位。

给定一个十进制整数,首先呢,看它是 0,正数,还是负数。如果是 0 的话,它的原码就是全 0 。如果是正整数的话,则符号位为 0,数值位为这个十进制正整数对应的二进制数。如果是负整数的话,则符号位为 1,而数值位是这个十进制负整数的绝对值所对应的二进制数。

举例来说,如果我们给定 49 这个 十进制正整数,那么,由于是正整数,所以,符号位为 0 。而数值位则是十进制整数 49 所对应的二进制数 11 0001 。假定这个数是 8 位整数,则它的原码就是 0011 0001 。如果这个数是 16 位整数,则它的原码是 0000 0000 0011 0001 。注意,填完了符号位与最简数值位之后,剩余位补 0 。

再来举一个例子,假定我们要来表示的整数是 -93 。这是一个负整数,所以,符号位为 1 。然后呢,这个负整数的绝对值为 93,所以,数值位为十进制整数 93 所对应的二进制数 101 1101 。假定这个数是 8 位整数,则它的原码为 1101 1101 。假定这个数是 16 位整数,则它的原码是 1000 0000 0101 1101 。注意,填完了符号位与最简数值位之后,剩余位补 0 。

二.    例题

在这里,我只举一个例子。求解 ±103 的原码。

无论是 +103,还是 -103,它的绝对值都是 103 。我们先求解 103所对应的二进制数,结果为 110 0111 。这个结果,我们将其作为数值位。

如果是 8 位二进制数,则 +103 的原码是 0110 0111,-103 的原码是 1110 0111 。

如果是 16 位二进制数,则 +103 的原码是 0000 0000 0110 0111,-103 的原码是 1000 0000 0110 0111 。

三.    特殊的原码

对于 0 这个数,它的 8 位原码为 0000 0000,它的 16 位原码为 0000 0000 0000 0000 。

但是现在有个问题,1000 0000,它代表着什么数呢?符号位为 1,而数值位为 0,它所代表的数,是 -0 吗?

不是的。

某一个原码,当符号位为 1,而数值位是全 0 时,这个原码所代表的数值,要看符号的位权是什么。

在某一个原码里面,我们设符号位的位权为 a,某一个数,它正好是说,符号位为 1,数值位是全 0,则这个原码所代表的十进制数为 -2^{a} 。

对于 8 位二进制数,符号位的位权为 7,所以,a 等于 7,则 1000 0000 所代表的十进制数为 -2^{7},为 -128 。

对于 16 位二进制数,符号位的位权为 15,所以,a 等于 15,则 1000 0000 0000 0000 所代表的十进制数为 -2^{15},为 -32768 。

四.    有符号数的范围

在学习 C/C++ 的时候,我们大概都学习过,8 位有符号整数的范围是 -128 ~ 127,而 16 位有符号整数的范围是 -32768 ~ 32767 。

也就是说,signed char 型变量的范围是 -128 ~ 127,而 short 型变量的范围是 -32768 ~ 32767 。

那么,为什么是这个范围呢?

我们先来说 8 位原码。 

(一)8 位原码的表示范围

首先呢,当 8 位全 0 时,此原码表示的数是 0 。

然后呢,当 符号位是 0,且数值位并非全 0 时,则此原码代表正整数。此时,这个正整数的数值位的取值范围是 000 0001 ~ 111 1111,也就是 1 ~ 127 。

当符号位为 1 时,且数值位并非全 0 时,则此原码代表负整数。此时,这个负整数的数值位的取值范围是 000 0001 ~ 111 1111,也就是说,这个负整数的绝对值为 1 ~ 127 。所以,在这种情况里,此原码的取值范围是 -127 ~ -1 。

当符号位 为 1,且数值位是全 0 时,此时,这个负整数所表示的数为 -128 。

我们将以上几种情况清点以下,-128,-127 ~ -1,0,1 ~ 127,把它们组合起来,就是 -128 ~ 127 。

(二)16 位原码的表示范围

首先呢,当 16 位全 0 时,此原码表示的数是 0 。

然后呢,当 符号位是 0,且数值位并非全 0 时,则此原码代表正整数。此时,这个正整数的数值位的取值范围是 000 0000 0000 0001 ~ 111 1111 1111 1111,也就是 1 ~ 32767 。

当符号位为 1 时,且数值位并非全 0 时,则此原码代表负整数。此时,这个负整数的数值位的取值范围是 000 0000 0000 0001 ~ 111 1111 1111 1111,也就是说,这个负整数的绝对值为 1 ~ 32767 。所以,在这种情况里,此原码的取值范围是 -32767 ~ -1 。

当符号位 为 1,且数值位是全 0 时,此时,这个负整数所表示的数为 -32768 。

我们将以上几种情况清点以下,-32768,-32767 ~ -1,0,1 ~ 32767,把它们组合起来,就是 -32768 ~ 32767 。

结束语

本节内容,我觉得应该还可以。希望大家能够学好本节知识。

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:计算机基础:编码02,有符号数编码,原码

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:计算机基础:编码02,有符号数编码,原码

回到目录

下一篇:无

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

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

相关文章

FaryGui文字shader修改,弧线排列

因项目要求,希望将文字进行标题那样的弧线排列,如下图: 对FaryGUI的文字Shader进行了一些修改,基本达到要求,shader设置如下: shader代码如下: // Upgrade NOTE: replaced _Object2World with unity_ObjectToWorld // Upgrade NOTE: replaced mul(UNITY_MATRIX_MVP,*) with Un…

C++ string的模拟实现

Hello!!大家早上中午晚上好,昨天复习了string的使用,今天来模拟实现一下string!!! 一、string的框架搭建 1.1首先我们需要一个string的头文件用来做变量、函数、类等声明;再需要一个test文件来做测试,还需…

使用LangChain实现基于LLM和RAG的PDF问答系统

目录 前言一.大语言模型(LLM)1. 什么是LLM?2. LLM 的能力与特点 二、增强检索生成(RAG)三. 什么是 LangChain?1. LangChain 的核心功能2. LangChain 的优势3. LangChain 的应用场景4. 总结 四.使用 LangChain 实现基于 PDF 的问答系统 前言 本文将介绍 …

C++实现rabbitmq生产者消费者

RabbitMQ是一个开源的消息队列系统,它实现了高级消息队列协议(AMQP), 特点 可靠性:通过持久化、镜像队列等机制保证消息不丢失,确保消息可靠传递。灵活的路由:提供多种路由方式,如…

在VMware上部署【Ubuntu】

镜像下载 国内各镜像站点均可下载Ubuntu镜像,下面例举清华网站 清华镜像站点:清华大学开源软件镜像站 | Tsinghua Open Source Mirror 具体下载步骤如下: 创建虚拟机 准备:在其他空间大的盘中创建存储虚拟机的目录&#xff0c…

又双叒叕Scrapy爬虫相关的面试题及详细解答

Scrapy是Python开发的一个快速、高层次的网络爬虫框架,专注于高效抓取网页并提取结构化数据。其核心设计基于异步处理机制,适合大规模数据采集任务。 文章目录 基础概念1. Scrapy框架的核心组件有哪些?架构与流程2. 描述Scrapy的工作流程核心组件详解3. 如何自定义Item Pipe…

使用STM32CubeMX+DMA+空闲中断实现串口接收和发送数据(STM32G070CBT6)

1.STM32CubeMX配置 (1)配置SYS (2)配置RCC (3)配置串口,此处我用的是串口4,其他串口也是一样的 (4)配置DMA,将串口4的TX和RX添加到DMA中 &#…

【视觉提示学习】3.21论文随想

. . Frontiers of Information Technology & Electronic Engineering. 2024, 25(1): 42-63 https://doi.org/10.1631/FITEE.2300389 中文综述,根据里面的架构,把视觉提示学习分成两类,一类是单模态提示学习(以vit为代表&…

(一)丶Windows安装RabbitMQ可能会遇到的问题

一丶可能会忘了配置ERLang的环境变量 二丶执行命令时报错 第一步 rabbitmq-plugins enable rabbitmq_management 第二部 rabbitmqctl status 三丶修改.erlang.cookie 文件 1.找到C盘目下的.erlang.cookie文件 C:\Users\admin\.erlang.cookie C:\Windows\System32\config\sys…

Mistral AI发布开源多模态模型Mistral Small 3.1:240亿参数实现超越GPT-4o Mini的性能

法国人工智能初创公司Mistral AI于2025年3月正式推出新一代开源模型Mistral Small 3.1 ,该模型凭借240亿参数的轻量级设计,在多项基准测试中表现优异,甚至超越了Google的Gemma 3和OpenAI的GPT-4o Mini等主流专有模型。 1、核心特性与优势 多…

springboot整合mybatis-plus【详细版】

目录 一,简介 1. 什么是mybatis-plus2.mybatis-plus特点 二,搭建基本环境 1. 导入基本依赖:2. 编写配置文件3. 创建实体类4. 编写controller层5. 编写service接口6. 编写service层7. 编写mapper层 三,基本知识介绍 1. 基本注解 T…

Qt之MVC架构MVD

什么是MVC架构: MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controll…

深度解析学术论文成果评估(Artifact Evaluation):从历史到现状

深度解析学术论文成果评估(Artifact Evaluation):从历史到现状 引言 在计算机科学和工程领域的学术研究中,可重复性和可验证性越来越受到重视。随着实验性研究的复杂性不断增加,确保研究成果可以被其他研究者验证和构建变得尤为重要。这一需…

二分查找上下界问题的思考

背景 最近在做力扣hot100中的二分查找题目时,发现很多题目都用到了二分查找的变种问题,即二分查找上下界问题,例如以下题目: 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置 它们不同于查找…

关于FastAPI框架的面试题及答案解析

FastAPl是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+的类型提示功能。它由Python开发者SebastianRamirez创建,并且使用了Starlette作为其核心组件以及Pydantic进行数据验证。 文章目录 基础篇1. FastAPI的核心优势是什么?2. 如何定义一个GET请求路由?…

HashMap添加元素的流程图

文章目录 JDK7 vs JDK8 的 HashMap 结构变化Java8 中哈希表的红黑树优化机制HashMap 添加元素的完整流程解析1. 计算 key 的哈希值并确定索引2. 检查该索引位置是否已有元素3. 处理哈希冲突4. 判断当前存储结构(链表还是红黑树)5. 判断链表长度是否超过 …

面向医药仓储场景下的药品分拣控制策略方法 研究(大纲)

面向医药仓储场景下的药品分拣控制策略方法研究 基于多机器人协同与智能调度的分拣系统设计 第一章 绪论 1.1 研究背景与意义 医药仓储自动化需求: 人工分拣效率低、出错率高(如药品批次混淆、过期风险)温控药品(如疫苗、生物制…

AI大模型介绍

大模型介绍 大模型是指具有大规模参数和复杂计算结构的机器学习模型,通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数 开发大模型不是从0开始,是建立在已有的大模型基座模型上做开发,构建企业知识库(向量数据库…

OpenPCDet详细部署与复现

OpenPCDet简介 OpenPCDet是一个用于3D目标检测的开源工具箱,它提供了多种数据集的加载器,支持多种模型,并且易于扩展。 本人使用硬件与环境 Linux操作系统(Ubuntu20.04) Python环境(Anaconda下独立创建&…

同旺科技USB to I2C 适配器 ---- 指令之间延时功能

所需设备: 内附链接 1、同旺科技USB to I2C 适配器 1、指令之间需要延时发送怎么办?循环过程需要延时怎么办?如何定时发送?现在这些都可以轻松解决; 2、只要在 “发送数据” 栏的Delay单元格里面输入相应的延迟时间就…