详解计算机中的数据宽度

我会用最通俗易懂的话语去描述数据宽度的相关概念,请耐心看完它
数学上的数字,是没有大小限制的,可以无限大。但是在计算机中,由于受到硬件的制约,数据是有长度限制的(我们称为数据宽度)。超过最多宽度的数据会被丢掉
不管你存储的是什么数据,在计算机中它最后都是以0,1的形式存储的

  • 为了大家理解,我举个例子
  • 假如我们在电脑上面下载了一首音乐,计算机它并不会管这是什么东西,它最后会以0,1的形式把这首音乐存储在计算机中,这首音乐最后存储在计算机中的样子就是
    1001010101011111000010000111110001100100011101001010100
  • 所以不管是什么数据,它最后在计算中的存储样子都是以0,1的形式
  • 0,1的形式在计算机中我们有专业的名词,叫做二进制。

数据宽度

  • 这里我们引入一个容器的概念。
  • 在生活中我们有很多的容器
  • eg:水杯 盘子 旅行箱
  • 这时候我们把计算机也看做一个容器,可能这里有些人会觉得不好理解
  • 其实这个没什么不好理解的。水杯里面装的是水,盘子里面装的是饭菜,旅行箱里面装的是衣物,而我们计算机中里面装的是二进制而已
    容器的大小其实就是数据宽度
  • 水杯中的数据宽度表示它最多能装多少升水
  • 盘子中的数据宽度表示它最多能装多少kg(千克)的食物
  • 旅行箱中的数据宽度表示它最多能装下多少衣物
  • 而在计算机中它的数据宽度,代表它能存储几位二进制数
    假如一个计算机中的数据宽度是4位,它能存储的数据如下
    | 0000 | 0001 |
    | 0010 | 0011 |
    | 0100 | 0101 |
    | 0110 | 0111 |
    | 1000 | 1001 |
    | 1010 | 1011 |
    | 1100 | 1101 |
    | 1110 | 1111 |

有符号数和无符号数

数学中的数据分为正数和负数,在计算机中我们分为无符号数和有符号数,无符号数表示全是正数,有符号数表示有正数有负数,其实计算机它并不知道这是无符号数和有符号数,都是程序员给他贴上的标签,不懂不要紧,我们马上来剖析一下它

  • 为了大家理解这里我引入一个人图。然后再来分析

  • 这里我们假设计算机只能存储4位二进制数

  • 为了便于观察我们把二进制数对应成16进制
    这是二进制对应的16进制
    二进制对应的16进制

  • 下面我们引入一张图来具体说明这个有符号数和无符号数在这里插入图片描述

  • 无符号数:0 1 2 3 4 5 6 7 8 9 A B C D E F

  • 有符号数:
    正数:0 1 2 3 4 5 6 7
    负数:-1 -2 -3 -4 -5 -6 -7 -8
    标签: F E D C B A 9 8

  • 看到这里我相信大家一定发现了点什么了

  • 当人们把这个圆贴上无符号数标签的时候它表示的范围是0~F

  • 当人们把这个圆贴上有符号数标签的时候
    从圆中间一分为2,左边为负数,右边为正数
    正数范围: 0~7
    负数范围: -8~-1

  • 所以在计算机中它存储的就是0,1这种形式的二进制,它并不知道什么是有符号数和无符号数,这些都是我们认为给它贴上标签的。

数据溢出

  • 所有的容器都是有界限的,一旦超出它的存储范围,它会从低位到高位存储,多余的会舍去
    eg:
  • 用4位宽度的容器计算无符号数F+1=? 因为该容器只能存储4位二进制数(对应也就是一位16进制数)而F+1会进位变成5位二进制数10000,因为是从低位到高位存储,多余 的会舍弃,所以会变成0000,其实如果你仔细看下来的话,从上图的圆更形象地表示了这个结果:从0开始逆时针方向是增加的,会发现F的下个数为0
  • 如果把F看成有符号数,即-1,-1+1=0
    所以数据是有符号数还是无符号数关键在于我们给它贴上什么样的标签,和计算机本身是没有什么关系的。

容器的种类

  • 计算机为我们提供了4中单位的容器
  1. 字节(BYTE):数据宽度为8位
  2. 字(WORD):数据宽度为16为
  3. 双字(DWORD):数据宽度为32位
  4. 四字(Quadword):数据宽度为64位
    目前计算机中没有数据宽度位4位的容器,我们仅用它来抛砖引玉

猜你喜欢

转载自blog.csdn.net/qq_51196205/article/details/109308687
今日推荐