当前位置: 首页 > article >正文

4:arm汇编语言4:bits/byte的介绍(ASCII码)与二进制补位

4.2 bits/byte的介绍与ASCII码的引入

这个是详细介绍计算机内部原理的基础,bits与byte其实这两个是计算机中非常重要的单位。首先看一下bits,它是一个基础的计算机单位。计算机单位?像长度单位是米,体重的单位是kg,你这个是啥玩意呢?

比特(bit)是计算机数据的最小单位,只能表示两个状态:0 或 1。它是构成更大数据单位(如字节、千字节等)的基本元素,用来表示和处理信息。1bit中只有0,1两个状态(在经典计算机中),而计算机中的东西都是以0/1表示的。但是吧这个实在是太小了,所以我们一般使用byte(字节)来进行一些计算等等的事情。

bytes(字节)1bytes = 8bits,所以一个字节能有八个比特。比如说010000000这个就是代表了一个字节(一个1/0代表的是一个bits)。那具体这个01000000代表啥这个会在之后说到。一个字节代表了256个整数。(当然具体的范围要等会儿说),因为每一个比特是两种情况,所以应该是2^8个整数。

那么到这里我知道了计算机不喜欢用十进制的数字,喜欢使用二进制的方式,(二进制是计算机的基础)而为啥之前的文章要写十六进制呢?是因为十六进制是二进制较为简单的缩写,同样在计算机的内部也经常使用。那么到这里有一个非常大的逻辑漏洞,那么我的字母,小数点,逗号,引号,那计算机是怎么认识的呢,这个就要提到ASCII码了

这个图片是来自于这个网址ASCII码十六进制的表格 - 搜索 图片 (bing.com)。原来的网站是ASCII码对照表(完整版)_360新知 (so.com)。

在这个代码中非常详细的讲解了为啥,同样二进制也是八位的,一个byte,比如说我打了一个“ha”

ha这个可以对照表(注意大小写是不一样的):01101000 01100001(二进制);68 61(十六进制);这个就是为啥计算机能懂我们写的东西了,因为都是由这个数字编写而成。

那么刚刚说的0100 0000是啥,可以对照一下ASCII表是:@。

4.2二进制体系与二进制补位

4.2.1介绍二进制补位

刚才在介绍关于八比特等于一字节,然后有256个数字,但是并没有范围的时候,其实大家的第一反应肯定是[0,255]啊,这不是很简单么,那么这个是无符号的二进制体系。很简单0000 0000是0这样子到255,但是有一个问题,怎么表示负数,所以在8位的时候(也就是一个字节)有一个特殊的体系叫做二进制补位,补位的出现,弥补了我们没有负数的情况。

二进制补位圆圈 - 搜索 图片 (bing.com),这个圆圈其实非常的清楚。(可以说在补码的情况下左边是0的一般是正数,然而左边是1的是负数)那么补码的出现很好的帮助计算机做减法,有负数这些问题。那么在4bits的情况下范围是[0,15],有补码的情况下是[-8,7],而这个范围的计算公式是

                                                  [-2^n,2^n-1]

这个n是指有几个bits。那么返回来8bits的情况下有补码的时候范围是啥呢,是这个范围[2^7,2^7-1]

4.2.2补码的经典问题

到这里如果我问你,在4位二进制的体系下,-3是多少?查表得1101

那么8bits呢?

那么10bits呢?

那么20bits呢?

不能全部列出来啊,这个太难受了

所以遇到这个非常非常经典问题的时候,你的解决方法其实非常多,我现在介绍一种

我用4bits下,-3是多少为例子?因为这个最为简单(学习理科都是先学习简单的,然后总结经验,做出假设,最后证明推向所有情况)首先我们来看一下4bits中有2^4个数字。16个数字,那么-1 是15(因为是0000左边那个)那么刚好-1的那个值是15的二进制。1111,这是巧合么?可以继续探究,得出了第一种方法。我们首先计算有多少的值,然后减去它想要的数字,从而能知道这个数字的二进制码是多少。

关于正数呢?更简单了,它压根就是十进制,因为你观察十进制的1-7(4bits中)就是二进制的1-7,因为补码在这个时候并没有改变。


http://www.kler.cn/a/375467.html

相关文章:

  • Qt指定程序编译生成文件的位置
  • 安卓13默认连接wifi热点 android13默认连接wifi
  • 手动搭建koa+ts项目框架(node开发配置环境变量)
  • 创意设计的起点:十大网页设计模板网站
  • UDP-鼠李糖合成酶基因的克隆与鉴定-文献精读76
  • Failed to install Visual Studio Code update
  • 【数据结构】guard
  • PyMOL中常用的命令列表
  • 代理人工智能如何应对现代威胁的速度和数量
  • 重载与重写的区别
  • wireshark复制数据
  • 极简实现酷炫动效:Flutter隐式动画指南第二篇之一些酷炫的隐式动画效果
  • 高清解压视频素材从哪儿下载?推荐5个高清推文素材资源网站
  • Unity3D Shader实现法线贴图功能详解
  • 【论文阅读】FUNNELRAG:一个从粗到精的逐级检索范式
  • 静态水印+动态水印,开启超强PPT版权保护!
  • 基于Material Design风格开源、免费的WinForms UI控件库
  • DNF 主从服务器的搭建
  • 传输层协议之UDP
  • 调试EKF的MATLAB代码的关键点
  • 智能交通的未来:深度学习如何改变车辆检测游戏规则
  • 抓取和分析JSON数据:使用Python构建数据处理管道
  • 从一个双向链表中移除一个链表
  • 掌握AI Prompt的艺术:如何有效引导智能助手
  • Ubuntu 命令行教程介绍
  • 什么是制造项目管理?