计算机中数据的表示

news2025/1/18 21:14:05

计算机数据表示

送入计算机的数字,字母,符号等信息必须转换成0、 1组合的数据形式才能被计算机识别。
能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据。

从计算机本质的角度而言啊,它所处理的数据。大体分分为数值型的数据和非数值型的数据。那我们来看一下什么叫做数值型的数据,其实我们想啊,我们整个给计算机的数据,不管是什么,最终电脑要处理的都是0101的。那么,将来我们能进行算术运算的。我们称它为数值数据,如果不能进行算术运算的,像字母等,我们就称它为非数值型的数据。

数值数据的表示

包括十进制、二进制、十六进制和八进制。

基数与各数位的权

  • 基数是指该进位制中允许选用的基本数码的个数。如十进制数,基数为10, 可选用0、1、2……9共10个不同数码中的任何一个。

  • 而位权的大小是以基数为底,数字所在位置的序号为指数的整数次幂。

在计算机科学中,位权(Bit Weight)通常用于表示数字在二进制中每个位所代表的权值。在二进制数中,每个位的权值都是 2 的幂,从右到左依次为 20、21、22、23… 以此类推。
例如,在 8 位二进制数中,从右到左的位权分别为:1、2、4、8、16、32、64、128。如果一个二进制数为 11010101,我们可以根据位权计算其对应的十进制值:(1 * 1) + (0 * 2) + (1 * 4) + (0 * 8) + (1 * 16) + (0 * 32) + (1 * 64) + (1 * 128) = 213。
所以,位权指的是每个位上数字的权值,这个权值通常是 2 的幂。但是,位权不等同于幂,幂是更广义的概念,可以是任何数字的指数运算,而位权是在计算机科学中用于二进制数的特定用法。

123 = 1X100 + 2X10 + 3X1   
    = 1X10^2 + 2X10^1 + 3X10^0

二进制

基数为2的进位制叫二进制

二进制只有0、1两种数码,计数逢2进位

1010 =  1X2^3 + 0X2^2 + 1X2^1 + 0X2^0
     =  1X8 + 0X4 + 1X2 + 0X1
     =  10

八进制数

  • 在大多数编程语言中,表示八进制数时通常使用以数字 0 开头的前缀。在C语言和类似C语法的语言中,表示八进制数的前缀是 0。在Python中,表示八进制数的前缀是 0o(字母 “o” 的小写形式)。

  • 例如,要表示八进制数 34,在C语言中可以写成 034,在Python中可以写成 0o34

  • 请注意,现代编程语言中,八进制表示方式不如十进制和十六进制常用,通常更推荐使用十进制和十六进制来表示数字。

十六进制

基数为16的进位制叫十六进制

16进制对应4个二进制位, 因为4个二进制位最小是0, 最大是15, 同理八进制对应3个二进制位

十六进制有0、1、2…9、a、b、c、d、e、f 共16种数码,计数逢16进位

0x1010 =  1X16^3 + 0X16^2 + 1X16^1 + 0X16^0
       =  1X4096 + 0X256 + 1X16 + 0X1
       =  5012

在这里插入图片描述

非数值数据表示

非数值数据包括文字、符号、图像、语言和逻辑信息等,也都是以0、1形式存在。

字符数据在机器内也被变换成二进制编码的形式。国际上普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII码。

char unsigned char 1字节 00000000~11111111 0~255

ASCII

第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上。

第二部分是由 20H 到 7FH 共 96 个,这 96 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。

第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM 制定的,并非标准的 ASCII 码。这些字符是用来表示框线、音标和其它欧洲非英语系的字母。

当我们的电脑在实际执行程序时,它会将所有的数据都视为机器码。例如,如果你给它一个整数,它会在内存中以补码的形式进行处理。但是,如果你给它一个字符(比如字母"a"或"b"),它会用一种特定的规则将其转化成二进制的0101形式。这个规则就是ASCII码表,它是美国国家信息标准中规定的表格。这个表格包含了常见的英文字母和一些特殊字符的对应关系。因此,当你遇到一个字母,比如"A",你可以将它转换成ASCII码,比如65。这样,计算机就能够正确地处理和表示这些字符数据了。字母在电脑看来也是一个固定的整数

原码, 反码, 补码

  • 原码、反码和补码都是计算机中用于表示带符号整数的表示方式。

    1. 原码(Sign-Magnitude)
      原码表示法最直观,是将一个整数的绝对值转换为二进制表示,然后再在最高位加上符号位(0 表示正数,1 表示负数)。例如,对于一个 8 位的整数,+3 的原码表示为 00000011,-3 的原码表示为 10000011

    原码的优点是简单易懂,直接表示了数值的大小和符号。但是,原码的缺点是存在正零和负零的表示,而且计算机在进行加减法运算时需要特殊处理符号位,导致加减运算较为复杂。

    1. 反码(One’s Complement)
      为了解决原码的加减运算复杂性,人们引入了反码表示法。对于正数,反码与原码相同;对于负数,反码是将原码中除符号位外的所有位取反(0 变为 1,1 变为 0)。例如,+3 的反码表示为 00000011,-3 的反码表示为 11111100

    反码的优点是简化了加减运算,使得加减法可以使用相同的硬件逻辑。但是,反码的缺点是存在两个零表示:+0 和 -0。这也导致了一些运算的问题。

    1. 补码(Two’s Complement)
      为了解决反码中存在两个零的问题,并使加减运算更加简化,人们引入了补码表示法。在补码中,正数的表示与原码和反码相同;而负数的表示是将其反码加 1(这个1是加在反码的最低有效位(最右边)上。)。例如,+3 的补码表示为 00000011,-3 的补码表示为 11111101

    如果补码的符号位为“1”,表示是一个负数,补码求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。

  • 补码的优点是只有一个零,且加减法的运算可以直接使用硬件的加法器,非常高效。补码也可以很方便地进行溢出处理。

  • 因此,补码是计算机中表示带符号整数最常用的方式。绝大多数现代计算机都使用补码表示法来处理整数运算。

原码表示形式中,0有两种表示,即
+0 :0000 0000;
-0 :1000 0000。
反码表示形式中,0有两种表示,即
+0:0000 0000;
-0:1111 1111;
补码表示形式中,0只有一种表示,即
+0=(-0):0000 0000。

关于为什么用补码表示有符号整数, 大家可以看看这位大佬的文章:
补码原理——负数为什么要用补码表示

拓展;

  • 在计算机中,我们无法直接从一个数字的二进制表示中判断它是原码还是反码。原码和反码只是表示一个带符号整数的不同方式,其二进制形式是相同的,所以无法直接通过二进制形式判断。

  • 要判断一个数字是原码还是反码,通常需要其他信息,例如上下文或者约定。在实际应用中,会根据特定的规则或协议来确定数字的表示方式。

  • 补码则可以通过以下规则判断:

    1. 补码的第一位是符号位,0 表示正数,1 表示负数。
    2. 如果符号位为0,剩余位表示的是正数的数值大小。
    3. 如果符号位为1,剩余位表示的是该负数的绝对值的二进制反码,然后加 1。
  • 在使用补码表示法时,我们可以直接根据符号位来判断一个数字的正负。而原码和反码的区分通常需要其他信息来解析。

总结和思考

总结

  • 掌握各种进制之间的转换

  • 熟悉ASCII码表

思考

  • 字符型数据如何表示?

    • 在计算机中,字符型数据是通过字符编码来表示的。常见的字符编码包括ASCII码(American Standard Code for Information Interchange)和Unicode。

    • ASCII码是最早的字符编码,它使用7位二进制来表示128个字符,包括数字、字母、标点符号和控制字符等。例如,字符 ‘A’ 在ASCII码中表示为 01000001,字符 ‘a’ 表示为 01100001

    • 随着计算机技术的发展,需要表示更多的字符,于是产生了Unicode编码。Unicode使用16位二进制来表示字符,可以表示更多的字符,包括各种语言的字符、符号、表情等。例如,字符 ‘A’ 在Unicode编码中表示为 00000000 01000001,字符 ‘a’ 表示为 00000000 01100001

    • 为了在计算机中表示字符型数据,通常使用字符型变量或字符数组来存储字符。在C语言中,字符型数据使用char类型来表示,可以使用单引号将字符括起来,例如:

      char ch = 'A';
      
    • 或者使用字符数组来存储多个字符:

      char str[] = "Hello";
      
    • 每个字符在内存中占用一个字节(8位),通过字符编码,计算机可以正确地识别和处理各种字符。

  • 字符’0’和整数0有什么区别?

    • 字符 ‘0’ 和整数 0 在计算机中是不同的数据类型和表示方式。
    1. 字符 ‘0’:

      • 字符 ‘0’ 是一个字符型数据,在C语言中使用 char 类型表示。
      • 字符 ‘0’ 在ASCII码中的表示是 00110000,十进制为 48。ASCII码中的字符 ‘0’ 是数字零字符。
      • 在C语言中,字符型数据使用单引号将字符括起来,例如 char ch = '0';
    2. 整数 0:

      • 整数 0 是一个整型数据,在C语言中使用 int 类型表示。
      • 整数 0 表示数值零。
      • 在C语言中,整数型数据直接写成数值形式,例如 int num = 0;
    • 虽然字符 ‘0’ 的ASCII码表示和整数 0 的数值相同,但它们在计算机中是不同的数据类型。字符 ‘0’ 是一个字符型数据,用来表示字符 ‘0’,而整数 0 是一个整型数据,用来表示数值零。

    • 需要注意的是,虽然字符 ‘0’ 和整数 0 的表示在ASCII码中是一样的,但它们在计算和处理时需要按照各自的数据类型来进行。在C语言中,字符型数据和整型数据可以进行一些转换,但在进行计算或比较时需要特别注意数据类型的转换和处理。

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

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

相关文章

《零基础入门学习Python》第077讲:Tkinter 模块:标准对话框

Tkinter 为了提供了三种标准对话框模块,它们分别是: messageboxfiledialogcolorchooser 注:这三个模块原来是独立的,分别是 tkMessageBox、tkFileDialog 和 tkColorChooser,需要导入才能使用。在 Python3 之后&#…

http和https的区别?(网络通讯)

HTTP: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种 网络协议 HTTPS: 是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。 两者区别: 1、HTTPS …

Vue3_02 创建Vue3.0工程

1.使用 vue-cli 创建 ## 查看 vue/cli 版本,确保 vue/cli 版本在4.5.0以上 vue -V 或 vue --version## 安装或升级你的 vue/cli npm install -g vue/cli## 创建 vue create vue_test## 启动 cd vue-test npm run serve 2.使用 vite 创建 什么是vite?——新一代…

Golang之路---03 面向对象——接口与多态

接口与多态 何为接口 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。   在 Go 语言中,…

24考研数据结构-二叉树的遍历

目录 5.3二叉树的遍历和线索二叉树数据结构:树的遍历前序遍历中序遍历后序遍历层次遍历遍历方法的选择结论 树的遍历应用5.3.1二叉树的遍历1. 先序遍历(根左右 NLR)2. 中序遍历(左根右 LNR)3. 后续遍历(左右…

基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程

基于JenkinsPythonUbuntuDocker的接口/UI自动化测试环境部署详细过程 1 Jenkins是什么?2 Jenkins目标是什么?3 什么是CI/CD?3.1 CI持续集成3.2 CD持续部署3.3 CD持续交付 4 Ubuntu环境4.1 环境需求4.2 实现思路 5 Ubuntu下安装Docker6 安装Jenkins6.1 拉…

电力巡检无人机助力迎峰度夏,保障夏季电力供应

夏季是电力需求量较高的时期,随着高温天气的来临,风扇、空调和冰箱等电器的使用量也大大增加,从而迎来夏季用电高峰期,电网用电负荷不断攀升。为了保障夏季电网供电稳定,供电公司会加强对电力设施设备的巡检&#xff0…

新抗原预测的计算工作流程

参考文献:Xie N, Shen G, Gao W, Huang Z, Huang C, Fu L. Neoantigens: promising targets for cancer therapy. Signal Transduct Target Ther. 2023 Jan 6;8(1):9. doi: 10.1038/s41392-022-01270-x. PMID: 36604431; PMCID: PMC9816309. 文章目录 *新抗原预测的…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio快速构建React完成点餐H5页面还原

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio快速构建React完成点餐H5页面还原 一、前言二、Cloud Studio 简介1.Cloud Studio 是什么2.Cloud Studio 的优点 三、Cloud Studio 登录注册四、Cloud Studio 的初体验五、使用 Cloud Studio 开发一个简版的点餐系统1.安装 a…

开源元数据管理平台Datahub最新版本0.10.5——安装部署手册(附离线安装包)

大家好,我是独孤风。 开源元数据管理平台Datahub近期得到了飞速的发展。已经更新到了0.10.5的版本,来咨询我的小伙伴也越来越多,特别是安装过程有很多问题。本文经过和群里大伙伴的共同讨论,总结出安装部署Datahub最新版本的部署手…

SpringCloud深入理解 | 生产者、消费者

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! SpringCloud Spring Cloud是一组用于构建分布式系统和微服务架构的开源框架和工具集合。它是在Spring生态系统的基础上构建的,旨在简化开发人员构建分布式…

Tomcat添加第三方jar包、如何在IDEA中启动部署Web模板

前言:公司最近维护老项目,是最原始的web项目,servlet和jsp结合的web项目,启动的时候配置了好几遍, 都起不来,很折磨人,这个文档比较全配置一遍准备工作 首先 拉取代码: git clone xxx.git ,如需要别的操作,自行baidu 也可以在idea中拉取第一步File ->Project Structure->…

张驰咨询:精益生产管理的独特特点和显著优势

精益生产管理是一种注重效率和优化生产流程的管理方法,旨在通过最小化浪费和提高生产效率来降低成本和提高产品质量。以下是精益生产管理的主要特点: 优化生产流程 精益生产管理强调通过优化生产流程来提高效率和降低成本。这包括通过标准化工作流程、…

【数据结构与算法】TypeScript 实现图结构

class Grapg<T> {// 用于存储所有的顶点verteces: T[] [];// 用于存储所有的边 采用邻接表的形式adjList: Map<T, T[]> new Map();// 添加顶点addVertex(v: T) {this.verteces.push(v);// 初始化顶点的邻接表this.adjList.set(v, []);}// 添加边addEdge(v: T, w:…

通向架构师的道路之Tomcat性能调优

一、总结前一天的学习 从“第三天”的性能测试一节中&#xff0c;我们得知了决定性能测试的几个重要指标&#xff0c;它们是&#xff1a; 吞吐量 Responsetime Cpuload MemoryUsage 我 们也在第三天的学习中对Apache做过了一定的优化&#xff0c;使其最优化上…

计算机视觉与图形学-神经渲染专题-ConsistentNeRF

摘要 Neural Radiance Fields (NeRF) 已通过密集视图图像展示了卓越的 3D 重建能力。然而&#xff0c;在稀疏视图设置下&#xff0c;其性能显着恶化。我们观察到&#xff0c;在这种情况下&#xff0c;学习不同视图之间像素的 3D 一致性对于提高重建质量至关重要。在本文中&…

总结了12句话,送给通信新员工

1、入职第一件事——改变形象。 刚毕业的大学生进入工作单位之后&#xff0c;需要尽快完成身份的转换——从一名学生&#xff0c;变身为一个职业人。 这个转换的第一步&#xff0c;就是改变形象外表。 大学里过于随意的穿搭&#xff0c;请一定不要带进单位&#xff0c;尤其是入…

Flowable-子流程-调用活动

目录 定义图形标记XML内容界面操作使用示例子流程设计子流程的XML内容主流程设计主流程的XML内容 视频教程 定义 调用活动是在一个流程定义中调用另一个独立的流程定义&#xff0c;通常可以定义一些通用的流程作为 这种调用子流程&#xff0c;供其他多个流程定义复用。这种子流…

✅1本期刊发生变动,EI期刊目录更新!

【SciencePub学术】继上次更新后一个月&#xff0c;爱思唯尔&#xff08;Elsevier&#xff09;官网更新了EI Compendex收录期刊目录。本次更新EI期刊目录中&#xff0c;Serials&#xff08;连续出版/核心收录&#xff09;列表共收录期刊名称5347个&#xff0c;与上次更新相比&a…

golang执行异步任务的第三方库jobrunner库实践

简介 我们在 Web 开发中时常会遇到这样的需求&#xff0c;执行一个操作之后&#xff0c;需要给用户一定形式的通知。例如&#xff0c;用户下单之后通过邮件发送电子发票&#xff0c;网上购票支付后通过短信发送车次信息。但是这类需求并不需要非常及时&#xff0c;如果放在请求…