计算机数据的表示

这篇具有很好参考价值的文章主要介绍了计算机数据的表示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机数据的表示

1. 数值数据的表示

1.1 各种进制数的表示

  • 二进制 (Binary) :以 0b0B 开头,字符仅含0和1.

    • 用下标2或者数字后面加B表示。如 $(1011)_2$ 或 $1011B$
  • 八进制 (Octal) :以 0o0O 开头,字符含0-7.

    • 用下标8或者数字后面加O表示。如 $(17)_8$ 或 $17O$
  • 十六进制 (Hexadecimal) :以 0x0X 开头,字符含0-9、a-f(代表10-15).

    • 用下标16或者数字后面加H表示。如 $(a1b1)_{16}$ 或 $a1b1H$

1.2 进制转换

R进制与十进制的转换

  • R进制转十进制:按位权展开。计算每位数字与该位位权乘积的代数和然后相加。
  • 十进制转R进制:除以 R 逆序取余。

二、八、十六进制互转

  • 二转八进制:从右往左每三位转一位八进制,最左边不足三位添0补齐。反之八进制每一位转三位二进制。

  • 二转十六进制:从右往左每四位转一位十六进制,最左边不足四位添0补齐。反之十六进制每一位转四位二进制。

python中的相关函数:

  1. int(*x*,base=10)

    这个函数按照base进制对数x进行解释,返回一个使用数字或字符串生成的整数int对象,无实参返回0。

    其中x数字或字符串base为进制,取值范围为[2,36]和0。

    一个进制为n的整数包含0到n-1的整数,其中a-z(A-Z)表示10到35。

    进制为0将会按照x字面的前缀进行解释,结果是2、8、10、16中的一个。

要清楚的一点是,在python中带有前缀的数字,例如0xa0o120b1010它们的类型(type)都是 int 整数类型。
如果想知道它们十进制数值,可以直接print,或 print(int(x)) ,也可以 int(str(x),base=0)(?).

对这个函数的使用,主要分为三种情况:

  • x为int类型:无论带不带前缀,这个数的进制已经清楚,它表示一个确定大小的数字。该函数无法对一个进制清楚非字符串类型进行转换(启用base关键字)。
  • x为str字符串类型:
    • 带前缀:表明这个数的进制已经清楚,base只能等于其前缀或0。
    • 不带前缀:根据用法自由发挥。注意没有前缀且令base=0的话应注意x其形式。比如int("010",base=0)是非法的。因为解释器认为x是十进制数,但x形式是错误的。
  • x为byte类型:暂时空缺。
x=int(156,base=2) #报错
x=int(0x156,base=0) #报错

x1="0101" #字符串
y1=int(x1,base=2) # 结果为整数5
y2=int(x1,base=8) # 结果为整数65
y3=int(x1,base=16) # 结果为整数257
y4=int(x1,base=35) # 结果为整数1226

x2="0xa5f1"
y5=int(x,base=16) # 结果为整数42481
y6=int(x,base=0) # 结果为整数42481
  1. hex(x)

将整数转换为以0x为前缀的十六进制字符串

  1. bin(x)

将整数转换为以0b为前缀的二进制字符串

  1. oct(x)

将整数转换为以0o为前缀的八进制字符串

1.3 机器码的表示

计算机中数的主要类型

  • 整数(定点数)
    • 无符号整数
      • 8位($0~2^{8}-1$)
      • 16位($0~2^{16}-1$)
      • 32位($0~2^{32}-1$)
    • 有符号整数
      • 8位($-27~2-1$)
      • 16位($-2{15}~2-1$) 16位整数
      • 32位($-2{31}~2-1$) 短整数
      • 64位($-2{63}~2-1$) 长整数
  • 浮点数
    • 32位(单精度浮点数)
    • 64位(双精度浮点数)
    • 128位(扩充精度浮点数)

真值、字长、机器数

  • 机器数:0或1 + 二进制绝对值

    • 计算机不认识除了0和1之外的任何符号,因此要专门留出一位用来表示正负号。
    • 将符号数字化的数,是数字在计算机中的二进制表示形式。
  • 真值:正负号 + 二进制绝对值

    • 计算机中的二进制机器数分为“有符号数”和“无符号数”两种。
    • “无符号数”就是二进制数的每一位都代表对应位的数值;而在“有符号数”中规定最高位用来表示数据符号,其中1代表负,0代表正,这样一来机器数本身就不等于真正的数值了。例如有符号数10000101,其最高位1代表负,所以余下的“0000101”才是数值本身,所以其真正数值是-5,而如果是无符号数,则10000101所代表的是133。为区别起见,把带符号位的机器数所对应的真正数值称为机器数的“真值”。例:00100001的真值=0 0100001=+33(正号可以不写,可以直接写成33),10100011的真值=1 0100011=-35。
  • 字长

    • :指计算机进行数据处理时,一次存取加工和传送的数据长度(字长度)。一个字通常是字节的整数倍。

    • 字长 是指计算机一次可处理的二进制数的码位长度,是计算机进行数据存储和数据处理的运算单位。如我们通常所指的32位处理器,就是指该处理器的字长为32位,也就是一次能处理32位二进制数。通常称16位是一个字,32位是一个双字,64位是两个双字。

    • 数值的转换结果是与字长有关的。如果计算机字长为8位,十进制中的数+5转换成二进制就是00000101,-5转换成二进制就是10000101;但如果字长是16位,+5转换的结果就是00000000 00000101,而-5转换成二进制就是10000000 00000101了。也就是对应的机器数要转换为字长所代表的位数。

    • 字长越长代表计算机的处理能力越强,可以处理的数越大。

      • 在8位字长中,除去符号位,实际可以处理的数值大小范围为[-127,-0]~[+0,127](即$2^7 -1$),共256个数。

      • 16位字长可以处理的数值大小是[-32677,-0]~[0,32767]($2^{15} -1$)。

      • 64位字长计算机可以处理的二进制数码位长度最大为64位,去掉符号位,则表示计算机可以处理的最大二进制数为 $2^{63}-1$,最小二进制数就是 $-2^{63}$。

    • 注意 以上的“-0”与“0”的机器数是不一样的,在8位字长中,-0为1 0000000,而+0为0 0000000;在16位字长中,-0为1 0000000 00000000,而+0为0 0000000 00000000。所以在二进制的机器数中,0也有两个(-0和0),且表示形式并不一样。

设机器字为8b字长,数N1的真值为 +1001110,数N2的真值为 -1001110,则N1、N2对应的机器数为:
01001110
11001110

原码表示法

符号位加数值的二进制。

有正零和负零之分。

反码表示法

  • 正数的补码、反码和原码都相同

  • 负数的符号位与原码、补码相同,数值将原码的数值位按位取反。

补码表示法

原码的计算不方便,因此引入补码的概念

  • 正数的补码、反码和原码都相同

  • 负数的的补码是先把除符号位外其他各位取反,再在末位加1。

TH 定点整数 定点小数
原码 $-(2{n-1}-1),2-1$ $(-1,1)$
反码 $-(2{n-1}-1),2-1$ $(-1,1)$
补码 $-2{n-1},2-1$ $[-1,1)$
  • 运算前将所有参与运算的数据转换为补码
  • 将转换后的数值进行运算
  • 运算结果再次求补码,得到最后的结果

移码表示法

1.4 二进制逻辑运算

  • 与运算 AND

    • 又称逻辑乘。用符号$\land$ 或 ·表示
      对应位均为1结果才为1.
  • 或运算 OR

    • 又称逻辑加。用符号 $\lor$ 或+表示
      对应位有一个为1结果就为1.
  • 非运算 NOT

    • 按位取反
  • 异或运算 XOR

    • 用符号$\bigoplus$ 表示
      对应位相同结果为0 ,不同结果为1。

2. 非数值数据的表示

  • 非数值数据:文字和符号(字符)、图像、声音等
  • 非数值数据的表示:对其进行二进制编码。任何数据存储到计算机中都是二进制数。

字符编码

  • 编码:编码是将源对象内容按照某种标准转换为另一种格式内容。解码是和编码对应的,它使用和编码相同的标准将编码内容还原为最初的对象内容。
  • 码点:一个编码表中的某个字符对应的代码值。比如ASCII中字符 A 的码点是65
  • 字符集:某种编码标准所支持的所有字符及其对应码点的集合。(书写系统字母与符号的集合)
    • 字符编码:字符到存储在计算机上的内容(特定的字节或字节序列)之间的映射,是一种规则。通常特定的字符集采用特点的编码方式。一种字符集可能有多种编码方案,比如 utf-8utf-16

ASCII码

常用的7位 $ASCII$ 码(American Standard Code for Information Interchange码,即美国信息交换标准代码)的每个字符都由7个二进制位b6~b0 表示,有128个编码,最多可表示128种字符。其中包括:

  • 10个数字09:30H~39H,48~57(十进制);
  • 26个小写字母az:61H~7AH ,97~122;
  • 26个大写字母AZ:41H~5AH ,65~90;
  • 各种运算符号和标点符号等。

在计算机中,用1B(一个字节)表示一个ASCII码,其最高一位(b7位)填0,余下的7b可以给出128个编码,表示128个不同的字符和控制码。

其中95个编码,对应着计算机终端能敲入并且可以显示的95个字符,打印机设备也能打印这95个字符,如大小写各26个英文字母,0—9这10个数字符,通用的运算符和标点符号+,-,*,/,>,=,< 等等。

UTF-8编码

  • Unicode字符集
    • 在Unicode中,每个字符占据一个码位/Unicode 编号(用4位十六进制数表示,Code point:U+ FFFF),字符集中的字符与Unicode 编号一一映射。如 U+ 0000 为“Null”,U+ 597D=""。Unicode字符集共定义了 1 114 112 个这样的位,使用从0到10FFFF的十六进制数唯一地表示世界上几乎所有字符。NCR(Numeric Character Reference),以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。

由于计算机存储数据通常是以字节为单位的,而且出于兼容之前的ASCII(0x00-0x7F)、节省存储空间等诸多原因,需要一种具体的编码方式来对字符码位进行标识。规定每个字符的Unicode编号如何存储(用一个字节还是多个字节存储,用哪些字节来存储),常见的基于Unicode字符集的编码方式有UTF-8UTF-16UTF-32

同一段二进制,每一个字节一个编号还是每两个字节一个编号,解码方式不一样,得到的编号不一样,对应的映射字符也不同,这就是乱码的原因。“锟斤拷”、“烫”就是这样来的。

汉字编码

对于汉字,计算机的处理技术必须解决三个问题:

  • 汉字输入
  • 汉字储存与交换
  • 汉字输出

它们分别对应着汉字输入码、内码、字模码的概念。
因此,汉字编码系统存在以下三种编码:

  1. 汉字输入码
  2. 汉字内码
  3. 汉字字模码

汉字输入码

汉字输入码也称 外码 ,是为了将汉字输入计算机而编制的代码,是代表某一汉字的一串键盘符号。
汉字输入码种类:

  • 数字编码:如区位码、国标码、电报码等。
  • 拼音编码:如全拼码、双拼码、简拼码等。
  • 字形编码:如王码五笔、郑码、大众码等。
  • 音形编码:如表形码、智能ABC等。

两种典型的数字编码:

  • 区位码:是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。
    • 例如“中”字位于54区48位,“中”字的区位码即为“5448”。
  • 国标码:将区位码加2020H,占用两个字节。
    • 例如“中”字的国标码为区位码5448的区码和位码转化为16进制,为3630H,再加2020H得国标码5650H。
  • 汉字字符集与编码
    • 1981年,GB2312-80国家标准,其字符及编码称为国标码又叫国际交换码。
    • GB2312字符集的构成:
      一级常用汉字3755个,按汉语拼音排列
      二级常用汉字3008个,按偏旁部首排列
      非汉字字符682个
      一般用2个字节来存放汉字;
      汉字分区,每个区94个汉字;

汉字内码

汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。

  • 汉字可以通过不同的输入法输入,但其内码在计算机中是唯一的。

  • 英文字符的机内代码是7位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。

  • 机内码等于汉字国标码加上8080H。

    • 例如“中”字的机内码为5650H+8080H=D6D0H。

汉字字模码

汉字字模码又称汉字字形码,它是将汉字字形经过点阵数字化后形成的一串二进制数,用于汉字的显示和打印。

  • 根据汉字输出的要求不同,点阵有以下几种:

    • 简易型汉字:16×16, 32字节/汉字
    • 普通型汉字:24×24, 72字节/汉字
    • 提高型汉字:32×32,128字节/汉字。
  • 汉字字库:将所有汉字的字模点阵代码按内码顺序集中起来,构成了汉字库。

  • 汉字字形点阵中每个点的信息用一位二进制码来表示,“1”表示对应位置处是黑点,“0”表示对应位置处是空白。
    例如16×16点阵,每个汉字就要占32个字节

计算机数据的表示

计算机数据的表示文章来源地址https://www.toymoban.com/news/detail-711107.html

到了这里,关于计算机数据的表示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【北邮鲁鹏老师计算机视觉课程笔记】08 texture 纹理表示

    【北邮鲁鹏老师计算机视觉课程笔记】08 texture 纹理表示 规则和不规则的 从纹理中恢复形状 通过识别纹理分析物理性质 如何区分纹理 发现模式、描述区域内模式 A对应图2 B对应图3 C对应图1

    2024年02月20日
    浏览(57)
  • 《深入理解计算机系统(CSAPP)》第3章 程序的机器级表示 - 学习笔记

    写在前面的话:此系列文章为笔者学习CSAPP时的个人笔记,分享出来与大家学习交流,目录大体与《深入理解计算机系统》书本一致。因是初次预习时写的笔记,在复习回看时发现部分内容存在一些小问题,因时间紧张来不及再次整理总结,希望读者理解。 《深入理解计算机

    2024年02月07日
    浏览(61)
  • 【计算机视觉|生成对抗】用深度卷积生成对抗网络进行无监督表示学习(DCGAN)

    本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题: Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 链接:[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (arxiv.org) 近年来,卷积网络(CNNs)的监督学习

    2024年02月13日
    浏览(63)
  • 计算机组成原理--基于Logisim的汉字的表示的应用(超详细/设计/实验/作业/练习)

    1、帮助理解汉字机内码、区位码,最终能利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换; 2、学生了解字形码显示的基本原理,能在实验环境中实现汉字 GB2312 编码的点阵显示。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机W

    2024年02月04日
    浏览(64)
  • 【硬件记录】烽影青轴机械键盘的灯光控制键 如何设置?如何设置键盘 跑马灯特效?附:烽影RGB三代快捷键 | 【SCI】计算机/期刊 论文中的 Preliminaries作为目录,一般表示什么意思?

      李白:任世人厌我、妒我、恨我、爱我、笑我、哭我,我只当风曾来过。   🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能领

    2024年02月02日
    浏览(54)
  • 【深度学习: 计算机视觉】如何改进计算机视觉数据集

    机器学习算法需要大量数据集来训练、提高性能并生成组织所需的结果。 数据集是计算机视觉应用程序和模型运行的燃料。数据越多越好。这些数据应该是高质量的,以确保人工智能项目获得最佳的结果和产出。 获取训练机器学习模型所需数据的最佳方法之一是使用开源数

    2024年02月20日
    浏览(48)
  • 头歌python之数值数据表示(一) ※

     #第一题 def dec2bin_Int(dec):     binum = \\\'\\\'     # 请在此添加代码,补全函数dec2bin_Int     #-----------Begin----------     while dec != 0:         r = dec % 2         if r == 1:             binum = binum + \\\"1\\\"         if r == 0:             binum = binum + \\\"0\\\"         dec = dec 

    2024年01月15日
    浏览(38)
  • 2023届计算机保研面试基础专业问题(数据结构、算法、计算机语言、计算机网络、数据库、操作系统、数学)

    以下的专业相关基础问题,是在2022年暑期准备面试过程中,断断续续准备的,最终上岸厦大啦,也希望这些内容对后面准备保研的学弟学妹们有帮助。少即是多、快即是慢,希望大家也不必太焦虑,慢慢来比较快! 堆、栈、队列、链表等数据结构 树:红黑树、二叉树的各类

    2024年02月15日
    浏览(63)
  • 计算机COM口数据测试

    计算机COM口数据测试 一、基本使用流程 程序需要以管理员身份运行,COM口回路测试需短接2,3pin,测试时候使用控制台,配置测试相关路径,并在测试完成后 1.测试配置路径D:bigdataINIFWCOM.ini 2.测试完成后需要在路径D:bigdataLOG生成测试FWCOM.log文件 程序运行结果示意图 运行完

    2024年02月13日
    浏览(36)
  • 计算机视觉常用数据集介绍

    MINIST 数据集应该算是CV里面最早流行的数据了,相当于CV领域的Hello World。该数据包含70000张手写数字图像,其中60000张用于train, 10000张用于test, 并且都有相应的label。图像的尺寸比较小, 为28x28。 数据说明及下载地址: http://yann.lecun.com/exdb/mnist/ 这个数据是由 Yann LeCun 创建

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包