滴水三期:day02.2-数据宽度

一、了解数据宽度

  • 计算机中存储的数据最终都是二进制存储的,计算机只认识1和0,但是不是一下子全部存进去的,而是分成很多的容器,每个容器都有最大容量,比如有的可以装4个二进制数,有的可以装8个二进制数。即在计算机中,由于受硬件的制约,数据都是有长度限制的(我们称为数据宽度)

  • 如果要存储的数超过了容器的数据宽度计算机怎么处理呢?直接将高位多出来的位丢弃!

    比如一个容器的数据宽度为4位,那么如果我现在存一个数16,化为二进制为10000,由于只能存4位,那么进位的多出来的位会被丢弃,最终读到的是0000,即0

二、数据宽度详解

以前我们只是记忆过如果计算机中某容器只能存储4位二进制数,那么如果存无符号数,那四个位都可以存数,则一共十六种情况,0000到1111(24);如果存储有符号数,则最高位要被当做符号位,如果为0则为正数,如果为1则为负数,所以此时只能后三位用来表示数据值,则有正000到111(23)和负000到111。但是计算机真的认识有没有符号吗???而且我们平时说的反码,原码,补码,计算机不知道,这只是人们总结出来的规律

1)4位宽度表示:假设计算机只能存储4位2进制数

实际上计算机中没有4位容器,我们只是为了引入方便理解,汇编中最小的容器数据宽度是8位的,即一个字节

  • 假设计算机只能存储4位二进制数:一共有16种数可以存:换成十六进制刚好是0到F

    0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

    ​ 0 1 2 3 4 5 6 7 8 9 A B C D E F

  • 无符号数:至于这块容器到底存有符号还是无符号数,是我们定义的。计算机最终只认识0、1,它不管哪个正负。所以现在如下图所示,从圆的右下方开始存数据,存无符号数。依次存0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。如果再比F大的数则会变成0!此时一共可以存16种数

  • 有符号数:由于只能存4位二进制数,现在我们又有存负数的需求,怎么办呢?公平起见,分两半,约定好一半存正数,一半存负数,所以此时0到7是正数,8到F是负数。因为数字只能用4位来存储,又要表示负数又要表示正数,所以干脆分一半。如果换成二进制就会发现,0到7最高位全是0;8到F最高位全是1。而且此时F为最大的负数,怎么推断的的呢?因为如果比F再大1的数就变成了0:1111+1=10000,只能存4位,多出来的位,计算机会丢弃,则计算机会当做0000,即0。所以F是最大的负数-1。那么对应的E就是-2,D就是-3。(这里可以用补码去理解)

    image-20211121141406459
  • 有符号数二进制1111表示最大的负数-1,现在用补码转原码的知识(计算机中的数都是二进制补码的形式存储的):将有符号数1111(补码)化成十进制是多少:先除符号位取反码1000,再末位+1,1001。最高位为符号位,后面001表示数值,则算出来就是-1(原码)

2)8位宽度表示:假设计算机只能存储8位2进制数

  • 假设现在4位不够表示我要存的数了,我换一个大一点的容器,存储数据的范围为0x00到0xFF,即数据宽度为8位,那么此时此容器如果用来存无符号数,则可从0x00一直存到0xFF,一共28=256种数;如果存有符号数,则还是切一半,00到7F是正数,80到FF为负数,化成二进制可以发现规律,80到FF的最高位都是1,即最高位为1的表示负数。正数同理可得。0xFF为最大的负数-1,0x80为最小的负数-128。

    image-20211121142622525

3)16位宽度表示:假设计算机只能存储16位2进制数

  • 16位数据宽度容器存储无符号数范围是从0到FFFF

  • 存储有符号数从0到7FFF表示正数,从8000到FFFF表示负数

    image-20211121142639434

4)32位宽度表示:假设计算机只能存储32位2进制数

目前计算机中最常见的也是这个数据宽度的容器

  • 32位数据宽度容器存储无符号数范围是从0到FFFFFFFF

  • 存储有符号数从0到7FFFFFFF表示正数,从80000000到FFFFFFFF表示负数

    image-20211121142946167

三、几个重要的计量单位

BYTE字节8bit1字节
WORD16bit2字节
DWORD双字32bit4字节
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值