前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >数据宽度

数据宽度

作者头像
用户7272142
发布2023-04-12 20:26:54
发布2023-04-12 20:26:54
1.5K0
举报
文章被收录于专栏:Republic博客Republic博客

数据宽度

数据宽度与上一个笔记的进制有很大关系。计算机不能无视大小存储一个数据,他需要一个容器来存放这些二进制数据 容器都是有大小的,超出这个容器计算机会舍弃这个二进制数的高位,进制篇说过,二进制数运算原理是转换成补码然后参与运算,同理。 假设一个容器有四位,这里只是假设,计算机最基本单位是byte 8位

二进制 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 2 3 4 5 6 7 8 9 A B C D E F 有符号 0-7 F到-8

数据溢出

在四位寄存器计算机中计算无符号F+1 =1111 + 1 = 10000 超出容器大小 舍去溢出位最后等于0 如果看见有符号数 F = -1 算式可以表示(-1)+1= 1111 + 0001 = 10000 还是会等于0

有符号数和无符号数存储详解

无符号

至于这块容器到底存有符号还是无符号数,是我们定义的。计算机最终只认识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。(这里可以用补码去理解)

32位数据宽度

32位数据宽度容器存储无符号数范围是从0到FFFFFFFF 存储有符号数从0到7FFFFFFF表示正数,从80000000到FFFFFFFF表示负数

高级语言

byte 1个字节 8位 word 两个字节 16位 Dwod 四个字节 32位

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据宽度
  • 数据溢出
  • 有符号数和无符号数存储详解
  • 无符号
  • 有符号
  • 32位数据宽度
  • 高级语言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档