C语言基础 您所在的位置:网站首页 一字节几位数字 C语言基础

C语言基础

2024-01-20 02:48| 来源: 网络整理| 查看: 265

文章目录 1.计算机为什么采用二进制?2.比特位(bit)与字节(Byte)的关系?1.比特位(bit)的引入?2.字节(Byte)的引入?3.为什么一个字节是8位二进制,而不是其他数目? 3.二进制与八进制、十进制、十六进制之间的转换?1.八进制、十六进制的定义?2.二进制与八进制之间的转换?3.二进制与十六进制之间的转换?4.二进制与十进制之间的转换?5.二进制、八进制、十进制、十六进制对照表 4.内存中为什么使用十六进制?

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,最大为11111111;通常1个字节可以存入一个ASCII码(128个字符),2个字节可以存放一个汉字国标码。

字节 --百度百科

个人理解是:

如果一篇英文文章没有把单词、标点、段落等分开,会非常不便于阅读,例如helloworldmynameisalien,这个你根本不知道啥意思,但是hello world, my name is alien ,你就知道啥意思了。所以,计算机为了阅读二进制数,把一个字节(8位二进制)区分开来,当做一个单词或者字,然后再去阅读。 10010110 00001111 10100000 类似这样的,计算机看做为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,每次相乘都是小数部分,顺序看取整后的数就是转化后的结果。

在这里插入图片描述

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

在这里插入图片描述

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

5.二进制、八进制、十进制、十六进制对照表 十进制二进制八进制十六进制000011112102231133410044510155611066711177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F16100002010 4.内存中为什么使用十六进制?

前面提到,我们把八个比特位当做一个字节,字节又是计算机存储信息的最小单位。如果想充分利用比特位的信息,每个比特位都完全利用上,就能充分利用每个比特位上的存储空间。(重要, 重要,重要!!!!)

ASCII码–百度百科 里面,总共存储了128个字符,占用的是一个字节。但其实,一个字节可以有2的8次方(2^8=256)可能,也就是说,ASCII其实还是可以拓展信息的,有一半空间没有充分利用。

十六进制(0–9, A、B、C、D、E、F)共计十六个数,可以理解为(2^4)个信息。

而一个字节是(2^8)个信息, 那么一个字节正好可以保存2个十六进制数据,且完全利用上所有比特位。

十进制(0–9)共计10个数,需要使用4个比特位才能存储下来,但4个比特位其实可以以存储16个数据信息的,只存储了10个数据,则存储空间就浪费了很多,而且检索数据的时候,空的地址符还需要再去检索,也是浪费时间。 同理,八进制(2^3)占用3个比特位,一个字节8个比特位,只能保存2个八进制,且有2个比特位没使用,这样也没有充分利用空间。

在这里插入图片描述

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

参考文档: https://jingyan.baidu.com/article/495ba84109665338b30ede98.html https://www.jianshu.com/p/919a9019e6ac



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有