计算机组成原理(2)王道学习笔记

news2025/1/29 6:48:28

数据的表示和运算

提问:1.数据如何在计算机中表示?

            2.运算器如何实现数据的算术、逻辑运算?

十进制计数法 

古印度人发明了阿拉伯数字:0,1,2,3,4,5,6,7,8,9(符号反映权重

十进制:975=9x100+7x10+5x1 (符号所在的位置也反映权重

进位计数制:有0~9,共十种符号。逢十进一 

以此类推,十进制的这种计数方式,我们会用每一个数码位乘以这个数码位所对应的一个实际的权值。这些权值都是十的某次方,因此我们才把它叫做十进制。

 其实呢,十进制能推广到 r 进制。r 进制里,基数就是 r,每个数码位能用 r 种符号。像古巴比伦人用的 60 进制,每个数码位就有 60 种符号,现在咱们算时间,1 小时 60 分钟,就是 60 进制的应用呢。不过在计算机世界里,常用的是二进制、八进制和十六进制。

r进制计数法

1. 二进制:计算机中最常用基数为2的计数制即二进制。它仅有0和1两种数码,计数规则是“逢二进一”,任意数位的权为2^{i},i是所在位数。

2. 八进制:基数是8,有0 - 7共8个不同数码,计数“逢八进一”。由于r = 8=2^{3},所以把二进制中的3位数码编为一组就是1位八进制数码,二者转换很方便。

3. 十六进制:基数为16,有0 - 9、A - F共16个不同数码,其中A - F分别表示10 - 15,计数“逢十六进一”。因为r = 16 = 2^{4},所以4位二进制数码与1位十六进制数码相对应。可以用后缀字母标识数的进制,用B表示二进制数,用D表示十进制数(通常直接省略),用H表示十六进制数,有时也用前缀0x表示十六进制数。  

 在计算机中,有二进制、八进制、十进制、十六进制

计算机喜欢二进制,一是因为能用两个稳定状态的物理器件表示 0 和 1,像高电平低电平、电容电荷正负。二是 0 和 1 对应逻辑的假和真,方便做逻辑算。三是能用逻辑门电路做算术运算。不过二进制给人看不太方便,所以也常用八进制和十六进制。

二进制数转换为八进制数和十六进制数

对于一个二进制小数(既包含整数部分,又包含小数部分),在转换时应以小数点为界。其整数部分,从小数点开始往左数,将一串二进制数分为3位(八进制)一组或4位(十六进制)一组,在数的最左边可根据需要加“0”补齐;对于小数部分,从小数点开始往右数,也将一串二进制数分为3位一组或4位一组,在数的最右边也可根据需要加“0”补齐。最终使总的位数为3或4的整数倍,然后分别用对应的八进制数或十六进制数取代。  

 如果我们想要将二进制转换为八进制,那么只需要三个二进制为一组,然后将每组转换为对应的八进制符号即可。

各进制的常见书写方式

进制书写方式 1书写方式 2书写方式 3
二进制(1010001010010)_{2}1010001010010B-
八进制(1652)_{8}--
十六进制(1652)_{16}1652H0x1652
十进制(1652)_{10}1652D-

十进制转换成任意进制数 

一个十进制数转换为任意进制数,通常采用基数乘除法(注意,基数的值与进制相关)。这种转换方法对十进制数的整数部分和小数部分将分别进行处理,对整数部分采用除基取余法,对小数部分采用乘基取整法,最后将整数部分与小数部分的转换结果拼接起来。

除基取余法(用于整数部分):对整数部分进行除基取余操作,最先获取的余数是数的最低位,最后获取的余数是数的最高位(即“除基取余,先余为低,后余为高” ),当商为0时操作结束。  

乘积取整法(小数部分):小数部分乘基取整,最先取得的整数为数的最高位,最后取得的整数为数的最低位(乘基取整,先整为高,后整为低),乘积为1.0(或满足精度要求)时结束。

 注意:

  1. 十进制数转换为任意进制数时,对于除基取余法和乘基取整法,以及所取之数放置位置的原理,应结合 r 进制数的数值表示公式思考,避免死记硬背。
  2. 在计算机中,整数和小数有区别,整数可连续表示,小数是离散的,不是每个十进制小数都能用二进制小数精确表示(如 0.3 乘二取整无法得到精确结果),但任意二进制小数都可用十进制小数精确表示,需引起重视。

 真值和机器数

真值:符合人类习惯的数字

机器数:数字实际存到机器里的形式,正负号需要被“数字化”。

类型定义正数示例(以 + 15 为例)负数示例(以 - 8 为例)
原码最高位为符号位,0 表示正数,1 表示负数,其余位为数值位的二进制表示01111(假设用 5 位二进制表示,下同)11000
反码正数的反码与原码相同;负数的反码是在原码的基础上,符号位不变,其余各位取反0111110111
补码正数的补码与原码相同;负数的补码是在反码的基础上 + 10111111000
移码在补码的基础上,将符号位取反(一般用于浮点数的阶码表示)1111101000

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

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

相关文章

简化配置与动态表达式的 Spring EL

1 引言 在现代软件开发中,配置管理和动态逻辑处理是构建灵活、可维护应用程序的关键。Spring 框架以其强大的依赖注入和面向切面编程功能而闻名,而 Spring Expression Language (Spring EL) 则为开发者提供了一种简洁且强大的方式来简化配置并实现动态表达式。 1.1 Spring …

python实现http文件服务器访问下载

//1.py import http.server import socketserver import os import threading import sys# 获取当前脚本所在的目录 DIRECTORY os.path.dirname(os.path.abspath(__file__))# 设置服务器的端口 PORT 8000# 自定义Handler,将根目录设置为脚本所在目录 class MyHTT…

在php中怎么打开OpenSSL

(点击即可进入聊天助手) 背景 在使用php做一些项目时,有用到用户邮箱注册等,需要开启openssl的能力 在php系统中openssl默认是关闭状态的,在一些低版本php系统中,有的甚至需要在服务器终端后台,手动安装 要打开OpenSSL扩展,需要进行以下步骤 …

二次封装的方法

二次封装 我们开发中经常需要封装一些第三方组件,那么父组件应该怎么传值,怎么调用封装好的组件原有的属性、插槽、方法,一个个调用虽然可行,但十分麻烦,我们一起来看更简便的方法。 二次封装组件,属性怎…

基于Springboot用axiospost请求接收字符串参数为null的解决方案

问题 ​ 今天在用前端 post 请求后端时发现,由于是以 Json对象的形式传输的,后端用两个字符串形参无法获取到对应的参数值 前端代码如下: axios.post(http://localhost:8083/test/postParams,{a: 1, b:2} ,{Content-Type: application/jso…

STM32 OLED屏配置

1.OLED简介 OLED(Organic Light Emitting Diode):有机发光二极管 OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点 0.96寸OLED模块:小巧玲珑、占用接口少、简单易用&a…

DiffuEraser: 一种基于扩散模型的视频修复技术

视频修复算法结合了基于流的像素传播与基于Transformer的生成方法,利用光流信息和相邻帧的信息来恢复纹理和对象,同时通过视觉Transformer完成被遮挡区域的修复。然而,这些方法在处理大范围遮挡时常常会遇到模糊和时序不一致的问题&#xff0…

STM32完全学习——RT-thread在STM32F407上移植

一、写在前面 关于源码的下载,以及在KEIL工程里面添加操作系统的源代码,这里就不再赘述了。需要注意的是RT-thread默认里面是会使用串口的,因此需要额外的进行串口的初始化,有些人可能会问,为什么不直接使用CubMAX直接…

QT TLS initialization failed

qt使用QNetworkAccessManager下载文件(给出的链接可以在浏览器里面下载文件),下载失败, 提示“TLS initialization failed”通常是由于Qt在使用HTTPS进行文件下载时,未能正确初始化TLS(安全传输层协议&…

全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI

不管是在传统领域还是 Crypto,AI 都是公认的最有前景的赛道。随着数字内容需求的爆炸式增长和技术的快速迭代,Web3 AIGC(AI生成内容)和 AI Agent(人工智能代理)正成为两大关键赛道。 AIGC 通过 AI 技术生成…

Golang之Context详解

引言 之前对context的了解比较浅薄,只知道它是用来传递上下文信息的对象; 对于Context本身的存储、类型认识比较少。 最近又正好在业务代码中发现一种用法:在每个协程中都会复制一份新的局部context对象,想探究下这种写法在性能…

VSCode+Continue实现AI辅助编程

Continue是一款功能强大的AI辅助编程插件,可连接多种大模型,支持代码设计优化、错误修正、自动补全、注释编写等功能,助力开发人员提高工作效率与代码质量。以下是其安装和使用方法: 一、安装VSCode 参见: vscode安…

Python 在Word中添加、或删除超链接

在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超链接,用户可以轻松地导航到相关信息,从而增强文档的互动性和可读性。本文将介绍如何使用Python在Word中添加超链接、或删除Word文档中的超…

Oracle迁移DM数据库

Oracle迁移DM数据库 本文记录使用达梦官方数据迁移工具DTS,将Oracle数据库的数据迁移至达梦数据库。 1 数据准备 2 DTS工具操作步骤 2.1 创建工程 打开DTS迁移工具,点击新建工程,填写好工程信息,如图: 2.2 新建迁…

Spring Boot整合JavaMail实现邮件发送

一. 发送邮件原理 发件人【设置授权码】 - SMTP协议【Simple Mail TransferProtocol - 是一种提供可靠且有效的电子邮件传输的协议】 - 收件人 二. 获取授权码 开通POP3/SMTP,获取授权码 授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。适用…

编辑器Vim基本模式和指令 --【Linux基础开发工具】

文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…

K8S极简教程(4小时快速学会)

1. K8S 概览 1.1 K8S 是什么 K8S官网文档:https://kubernetes.io/zh/docs/home/ 1.2 K8S核心特性 服务发现与负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。存储编排:自动挂载所选存储系统,包括本地存储。Secret和…

淘宝商品数据解析的应用场景有哪些?

淘宝商品数据解析在多个领域有着广泛的应用场景,以下为你详细介绍: 电商运营与营销 选品分析:通过解析淘宝商品数据,卖家可以了解不同商品的销售情况、价格区间、市场需求热度等信息。例如分析某类商品在不同季节的销量变化&#…

基于OpenCV实现的答题卡自动判卷系统

一、图像预处理 🌄 二、查找答题卡轮廓 📏 三、透视变换 🔄 四、判卷与评分 🎯 五、主函数 六、完整代码+测试图像集 总结 🌟 在这篇博客中,我将分享如何使用Python结合OpenCV库开发一个答题卡自动判卷系统。这个系统能够自动从扫描的答题卡中提取信…

计网week1+2

计网 一.概念 1.什么是Internet 节点:主机及其运行的应用程序、路由器、交换机 边:通信链路,接入网链路主机连接到互联网的链路,光纤、网输电缆 协议:对等层的实体之间通信要遵守的标准,规定了语法、语义…