C语言基础—1.比特位与字节的关系,二进制、八进制、十六进制之间的转换,内存为什么使用十六进制?

C语言基础—1.比特位与字节的关系,二进制、八进制、十六进制之间的转换,内存为什么使用十六进制?文章目录 1 计算机为什么采用二进制 2 为什么引入字节 3 为什么一个字节是 8 位二进制 而不是其他数目 4 为什么引入八进制 十六进制 1 二进制转换 2 十六进制转换 1 计算机为什么采用二进制 因为二进制是在电路中最好控制的 只有 1 和 0 两种状态 代表接通和关闭电路的状态 2 为什么引入字节 1 字节 byte 字节 8bit 字节 Byte bait n C 是计

1.计算机为什么采用二进制?

最初的时候,计算机是由二极管发展而来的。每个二极管能表达二种信号,就是接通电路或关闭电路两种状态(1 & 0)如果有2个二极管,就可以根据顺序,表达出4种状态(00 & 01 & 10 & 11), 那么如果有N个二极管,那就可以表达出二的N次方(2ⁿ)个状态。根据这种理论,就可以保存的信息就很多。最终需要做的就是,00代表啥,01代表啥,11代表啥,定义好之后,所有的组合到一起,就成了语句或十进制数字了。

2.比特位(bit)与字节(Byte)的关系?

1.比特位(bit)的引入?

上面讲到二进制的引入,为了表达每一个二极管(比特位)的信息,把这个最小的信息单元叫比特位。每个比特位存放0或1。

2.字节(Byte)的引入?

1字节(byte,字节)= 8 bit

  • 字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。
  • 字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。
  • 八位二进制数最小为00000000,最大为;
  • 通常1个字节可以存入一个ASCII码(128个字符),2个字节可以存放一个汉字国标码。

字节 –百度百科

个人理解是:

  • 如果一篇英文文章没有把单词、标点、段落等分开,会非常不便于阅读,例如helloworldmynameisalien,这个你根本不知道啥意思,但是hello world, my name is alien ,你就知道啥意思了。
  • 所以,计算机为了阅读二进制数,把一个字节(8位二进制)区分开来,当做一个单词或者字,然后再去阅读。
    00001111 类似这样的,计算机看做为3个字

3.为什么一个字节是8位二进制,而不是其他数目?

可以看一下ASCII的定义,应为早期的ASCII为了表达出所有需要表达的字母和一些特殊符号,发现8位二进制就能基本表达所有英文字母、特殊符号了。详情可参考如下链接,这样我们就可以把8位二进制当做一个字节,去代表一个计算机能识别的最小语言单位。

ASCII码–百度百科

3.二进制与八进制、十进制、十六进制之间的转换?

1.八进制、十六进制的定义?

八进制

  • 八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。
  • 八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。

十六进制

  • 十六进制(英文名称:Hexadecimal),同我们日常生活中的表示法不一样,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9,A-F对应10-15。
  • 十六进制的数和二进制数可以按位对应(十六进制一位对应二进制四位)
  • 内存中保存数据以及内存地址,都是十六进制

2.二进制与八进制之间的转换?

在这里插入图片描述

3.二进制与十六进制之间的转换?

在这里插入图片描述

4.二进制与十进制之间的转换?

十进制转化二进制的方法(除2倒序取余法):

用十进制数除以2,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。

在这里插入图片描述

十进制的小数转换成二进制(小数乘二正序取整法):

小数部分和2相乘,取整数,不足1取0,每次相乘都是小数部分,顺序看取整后的数就是转化后的结果。

在这里插入图片描述

如上这种方法保存小数,容易产生数据精度失真的情况。原始数据可能一摸一样,但最终保存到计算机中,内容是一样的。后面会提到单精度和双精度小数的问题。

在这里插入图片描述

通过如上的转换,我们发现无论计算机需要存储多少位二进制,例如,我们都不用担心不方便阅读的问题,因为我们可以根据不同的进制去读取,虽然存储都是以二进制形式存储的。所以,最终计算机会根据实际的应用场景,会使用十六进制、八进制的格式去存储信息。

5.二进制、八进制、十进制、十六进制对照表

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

4.内存中为什么使用十六进制?

  • 前面提到,我们把八个比特位当做一个字节,字节又是计算机存储信息的最小单位。如果想充分利用比特位的信息,每个比特位都完全利用上,就能充分利用每个比特位上的存储空间。(重要, 重要,重要!!!!)
  • ASCII码–百度百科 里面,总共存储了128个字符,占用的是一个字节。但其实,一个字节可以有2的8次方(2^8=256)可能,也就是说,ASCII其实还是可以拓展信息的,有一半空间没有充分利用。
  • 十六进制(0–9, A、B、C、D、E、F)共计十六个数,可以理解为(2^4)个信息。
  • 而一个字节是(2^8)个信息, 那么一个字节正好可以保存2个十六进制数据,且完全利用上所有比特位。

在这里插入图片描述

内存中,一个字节的十六进制数据可以对应二进制是4个字节,所以内存中,存储数据的空间利用率非常高效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227469.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:14
下一篇 2026年3月16日 下午9:15


相关推荐

  • Vagrant系列(二)—-Vagrant的配置文件Vagrantfile详解

    Vagrant系列(二)—-Vagrant的配置文件Vagrantfile详解

    2021年11月8日
    85
  • 如何搭建传奇服务器_架设传奇需要什么样的服务器

    如何搭建传奇服务器_架设传奇需要什么样的服务器分享一篇技术文章,传奇私服架设教程。教程讲的很详细,就是一个菜鸟都能学会如何架设传奇私服。在管理工具->服务中停止ssdpdiscoveryservic服务一、准备软件DBCommander2000Pro和传奇服务端(什么版本都行)。二、简易安装说明:1、安装设置DBCommander2000Pro1)安装DBCommander2000Pro2)打开控制面板3)打开BDEA…

    2022年10月6日
    4
  • 如何恢复MacBook或iMac的出厂设置

    如何恢复MacBook或iMac的出厂设置不少mac小伙伴,都或多或少有过想把macbook或imac恢复出厂设置的经历。本文简单介绍了恢复出厂设置的办法。在此之前,先确认是否尝试过首先修复Mac?如果遇到软件问题,可以通过在macOSRecovery中简单地重新安装macOS来解决许多问题。只要在使用磁盘工具时不擦除硬盘驱动器,就可以保留所有数据!当然,如果由于要出售Mac或要擦除所有数据而要完全重置Mac,则另当别论。如何macOS恢复在重置Mac的过程中,您需要多次输入macOSRecovery才能完成这些步骤。所以首先进入ma

    2022年6月16日
    49
  • MVC三层架构详细图

    MVC三层架构详细图Model业务处理:业务逻辑(Service) 数据持久层:CRUD(Dao)View展示数据 提供链接发起Servlet请求Controller接收用户的请求:(req:请求参数、Session信息) 交给业务层处理对应的代码 控制视图的跳转…

    2022年6月25日
    34
  • 用C++和SFML写游戏-SFML介绍(1)

    用C++和SFML写游戏-SFML介绍(1)我想大多数初学 C 的人都有这样一个疑惑 那就是学完这门编程语言之后接下来能做什么 并且大多数初学者学习过程都应该是看着这么一个黑框框 就像是这样这么一看学习 C 确实是挺无聊的一件事 实际上 C 能做的事情远比我们想象中的要多 它在游戏 科学计算 网络软件 分布式应用 操作系统 设备驱动程序和嵌入式系统等领域都有应用 应用领域非常广泛 但是缺点也很明显 开发效率低 这里我会写一

    2026年3月19日
    2
  • 浅谈插头dp

    浅谈插头dp毒瘤瘤的插头dp

    2022年7月1日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号