0 & 1

简介: 在计算机中所有的信息都是以二进制形式存储的,因为逻辑电路只有通和断两种情况,就是对应着的1和0,那么所有的信息都是如何存储的呢?


进制与进制转换,进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。计算机中使用二进制,我们平常数学中使用十进制,计算机编程更多用到十六进制。

微信图片1.png

在Excel中B列填充序列十进制数0~15,在A列和C列输入公式=DEC2BIN和=DEC2HEX将B列的数据转换成二进制和十六进制。由表可知,表示完整的十六进制需要4位二进制数。

      文字信息的存储,文字信息通过编码来储存,拿ASCII码举例,ASCII码使用指定的7位二进制数组合来表示128种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。其中:0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10和13分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。32~126(共95个)是字符(32sp是空格),其中48~57为0到9十个阿拉伯数字;65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。如下表:

微信图片2.jpg

ASCII码用7位来储存,从00~7F,这就是编码,0000 0000~0111 1111足以表示所有的英文字符,其余的GBK码和Unicode码都是同样的原理,只是一个字符所占的字节不一样,这就是为什么在计算机上一个英文字符占一个字节,一个中文字符占用两个字节,其中一个字节为8位。

在MATLAB中用char函数求出数值对应ASCII码:

>> char(97)
      ans =
      a
>> char(98)
      ans =
      b

图片信息的存储,图片信息在计算机中也是以0和1方式存储的,我们可以分两类图形来讲解,第一种是灰度图,第二种是彩色像素图,暂时不说矢量图。以24位真彩色图片为例,在Matlab进行分析:

clear
clc
a = imread('psb.jpg');  %在Matlab当前目录下存在图片psb.jpg,读入图片
figure(1)
imshow(a)               %显示原始图片
%分析灰度图数据
h = rgb2gray(a);
figure(2)
imshow(h)
%分析彩色图
%红色图层
red = a;
red(:,:,2:3) = 0;       %其他色层赋值为0
figure(3)
subplot(131)
imshow(red)
%绿色图层
green = a;
green(:,:,1) = 0;
green(:,:,3) = 0;
subplot(132)
imshow(green)
%蓝色图层
blue = a;
blue(:,:,1:2) = 0;
subplot(133)
imshow(blue)

运行结果:


微信图片_3.jpg

微信图片4.jpg

我们可以看看此时Matlab工作区,原始彩色图数据a为一个313x402x3的无符号整形8位三维数组,这是为什么呢?我们看下原始图片的属性,图片的宽度和高度是402像素和313像素,每个像素点用8位数据来储存,我们先看灰度图数据h,这是一个313x402的二维数组,因为灰度图像素值量化后用一个字节(8位)来表示。如把有黑-灰-白连续变化的灰度值量化为256个灰度级,灰度值的范围为0~255,表示亮度从深到浅,对应图像中的颜色为从黑到白。黑白照片包含了黑白之间的所有的灰度色调,每个像素值都是介于黑色和白色之间的256种灰度中的一种。在彩色图中,每个像素点都有三层,这是因为在计算机中颜色显示原理遵循色光三原色,24位图像就是每一原色位为8位,即R,G,B分别为8位(0~255),在前面,我们用Matlab将三原色层分别提取出来可以看出色彩是如何叠加的。

微信图片5.png


音频信息的存储,用Matlab读入音频文件Annie.mp3,并画出音频波形图:

clear
clc
[y Fs] = audioread('Annie.mp3');
plot(1:size(y),y)
sound(y,Fs)

运行结果:


微信图片6.jpg

其存储原理也是如此,至于视频,就是图像加音频的结合,在真实的存储过程中,会存在很多的压缩算法,并不是全部按照规整的01来存储的。




目录
相关文章
|
机器学习/深度学习 Web App开发 人工智能
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
|
2月前
|
监控 Java 开发者
JDK 9新特性深度解析:垃圾回收器的改进与优化
本文将深入探讨JDK 9中垃圾回收器的改进与优化。随着Java语言的不断发展,垃圾回收器作为内存管理的核心组件也经历了多次迭代和改进。JDK 9引入了新的垃圾回收器,旨在提高内存回收的效率和性能,降低垃圾回收的停顿时间。本文将详细介绍这些改进,以及如何在实际应用中利用这些改进来提高应用程序的性能和稳定性。
|
2月前
|
人工智能 自然语言处理 前端开发
解密GPT在日常生活中的神奇应用:从工作到娱乐,处处随行
解密GPT在日常生活中的神奇应用:从工作到娱乐,处处随行
101 0
|
2月前
|
存储 监控 数据可视化
Mapmost Alpha,一款非常好用且强大的三维城市创建工具~!
Mapmost Alpha,一款非常好用且强大的三维城市创建工具~!
|
10月前
|
Serverless
html 页面中动态计算 div 元素的宽度
html 页面中动态计算 div 元素的宽度
111 2
|
8月前
|
Shell Linux 编译器
10个基于Linux内核开源项目,你了解几个?(上)
10个基于Linux内核开源项目,你了解几个?
|
存储 Linux 调度
Linux部署KVM虚拟化平台
Linux部署KVM虚拟化平台
295 0
|
存储 人工智能 安全
鲲鹏系列五: DevKit开发全系列工具技术要点总结
摩尔定律发展趋势的逐渐放缓,让算力和性能陷入一系列发展瓶颈,市场对创新架构的需求日益加深,计算平台的创新之战一触即发
593 0
鲲鹏系列五: DevKit开发全系列工具技术要点总结
|
算法 数据挖掘
不用再往下划,信息熵(Entropy)概念及应用(附视频)都在这里啦!
不用再往下划,信息熵(Entropy)概念及应用(附视频)都在这里啦!
397 0
不用再往下划,信息熵(Entropy)概念及应用(附视频)都在这里啦!
|
Web App开发 缓存 网络协议
nginx 限流模块和fail2ban搭配使用
ngnix的限流模块主要有三个: limit_conn 限制某个ip的tcp连接数目或者限制某个server(网站)整体的连接数目 limit_rate 现在每个请求的数据大小 limit_req 限制某个ip的请求次数 其中效果最明显的是第三个limit_req,但是宝塔面板中的流量限制只有前面两项的配置,所以之前一直流量限制没什么用。
394 0
nginx 限流模块和fail2ban搭配使用