二进制编码

2023-11-15

前言

我们都知道,一个程序是=数据结构+算法,如果对应到组成原理或者是硬件层面上来说,算法就是我们的各种计算机指令,而数据结构就是我们对应的二进制数据

字符串的表示,从编码到数字

其实不仅数字可以用字符串来表示,最典型的例子就是字符串,最早的使用的为英文字符串,加上数字和一些特殊的符号,之后使用8位的二进制,就能表示我们所有的字符了,这个其实就是我们经常说的ASCII码了在这里插入图片描述
ascii就好比一个字典,它可以表示不同的数,之后在我们的字符中,数字1也不再是1了。而是31了,如果是两个数字的话则就是两个连续的二进制数字放在一起,11和5就是0011 0001和0011 0101,需要两个八位来表示

我们知道,最大的32位整数,就是2147483647,如果使用整数法表示的话,只需要32位就可以表示了,而使用字符串来表示的话则需要80位来表示,这也就是才json和csv传输的,不管是整数也好,浮点数也好,采用二进制编码都会节省不少空间

但是ascii码只表示了128个字符,但是随着不同国家对计算机普及,128就不够用了,而且对于中文这样的文字来说是无法表示的,于是各国的计算机工程师就开始各显神通,给自己国家的语言创建了字符集字符编码

而字符编码则是对于字符集里的这些字符,怎么一一用二进制表示出来的一个字典。我们上面说的 Unicode,就可以用 UTF-8、UTF-16,乃至 UTF-32 来进行编码,存储成二进制。所以,有了 Unicode,其实我们可以用不止 UTF-8 一种编码形式,我们也可以自己发明一套 GT-32 编码,比如就叫作 Geek Time 32 好了。只要别人知道这套编码规则,就可以正常传输、显示这段代码。
在这里插入图片描述
字符集就是一个字符的集合,就和我们经常使用的新华字典一样,我们日常所说的Unicode,就是一个字符集,包含了150种语言的14万个不同字符,而字符编码中则是对字符集的这些字符,怎么一一用二进制表示出来一个字典,我们可以使用utf-8来进行编码。我们也可以自己发明一套 GT-32 编码,比如就叫作 Geek Time 32 好了。只要别人知道这套编码规则,就可以正常传输、显示这段代码。

所以同样的文本用不同的编码储存下来,另一个程序用不同的方式来解码,就会出现乱码,中文世界里,最典型的就是“手持两把锟斤拷,口中疾呼烫烫烫”的典故。

曾经听说过这么一个笑话,没有经验的同学,在看到程序输出“烫烫烫”的时候,以为是程序让 CPU 过热发出报警,于是尝试给 CPU 降频来解决问题。

这个是一个我们经常遇见的情况
在这里插入图片描述
首先“锟斤拷”是出现在一些老的邮件当中,他们在unicode不存在,所以就会默认为U+FFFD,用utf8记录下来则是就是\xef\xbf\xbd。如果连续两个这样的字符放在一起,\xef\xbf\xbd\xef\xbf\xbd,这个时候,如果程序把这个字符,用 GB2312 的方式进行 decode,就会变成“锟斤拷”。这就好比我们用 GB2312 这本密码本,去解密别人用 UTF-8 加密的信息,自然没办法读出有用的信息。

而“烫烫烫”,则是因为如果你用了 Visual Studio 的调试器,默认使用 MBCS 字符集。“烫”在里面是由 0xCCCC 来表示的,而 0xCC 又恰好是未初始化的内存的赋值。于是,在读到没有赋值的内存地址或者变量的时候,电脑就开始大叫“烫烫烫”了。

总结

到这里,相信你发现,我们可以用二进制编码的方式,表示任意的信息。只要建立起字符集和字符编码,并且得到大家的认同,我们就可以在计算机里面表示这样的信息了。所以说,如果你有心,要发明一门自己的克林贡语并不是什么难事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二进制编码 的相关文章

  • 计算机组成原理--I/O系统

    大学峡谷秀 xff0c 机组未学溜 xff0c 如今涕泪流 xff0c 共勉之 近来学习netty零拷贝 xff0c 复习并笔记之 1 概念 以主机为中心 xff0c 将信息从外部设备读入或输出的操作称为IO xff0c 外部设备包括输入输
  • 《计算机组成原理实验》 单周期CPU

    计算机组成原理实验 单周期CPU 前言 这是中山大学2018年计算机组成原理实验中单周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara
  • 第二章 计算机发展与应用

    计算机从诞生至今已经经历了多个阶段的发展 包括 1 电子管时代 1940年代 1950年代 计算机使用电子管作为主要的电子元件 这些计算机体积庞大 功耗大 但是它们标志着计算机的诞生 并且在二战期间被广泛应用于军事领域 2 晶体管时代 19
  • 计算机组成原理大题简答题,常见问题总结(必背)

    计算机中采用二进制主要原因 技术实现简单 计算机由逻辑电路组成 逻辑电路通常只有两个状态 开关的接通与断开 这两种状态正好可以用 1 和 0 表示 简化运算规则 两个二进制数和 积运算组合各有三种 运算规则简单 有利于简化计算机内部结果 提
  • 【计算机组成原理】16-定点数与浮点数

    一 定点数的表示方法 1 纯小数 乘以比例因子以满足定点数保存格式 2 纯整数 小数点在后面 二 浮点数的表示方法 计算机处理的很大程度上不是纯小数或纯整数 数据范围很大 定点数难以表达 1 浮点数的表示格式 科学计数法 j S 尾数 r
  • 计算机组成原理笔记01

    做题笔记1 学习内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 2 课后练习P17 7 某计算机主频为1 2GHz 其指令分为4类 它们在基准程序中所占比例及CPI如表1 7所示 指令
  • 补码除法运算(加减交替法)

    x 补 00 1000 除数y 补 11 0101 两个数是异号 因此使用x 补 y 补 11 1101 11 1101继续与y 补 对比 发现是同号 商上1 余数11 1101向左移动一位 再加上 y 补 结果为00 0101 余数00
  • [计算机组成原理] 以低字节地址为字地址

    以低字节地址为字地址 就是小端存储模式 数据低位 或者说低字节 存储在内存低地址 以高字节地址为字地址 就是大端存储模式 数据低位 或者说高字节 存储在内存高地址 现在看一个例题 这个题目有一个需要明确的地方 什么是第一 第二 第三字节 对
  • 8.4-中断系统小结(cpu中断七个问题)

    README 本文转自bilibili 计算机组成原理 哈工大刘宏伟 的视频讲解 非常棒 墙裂推荐 1 中断介绍 1 作用 用中断系统实现了外设数据的输入输出 还可以用于程序调试 计算机系统的异常事件 都可以用中断系统来处理 2 中断因素
  • 计算机组成原理实验二 存储系统预习报告

    实验一 静态RAM 一 实验目的 掌握静态随机存储器 RAM 工作特性及数据的读写方法 基于信号时序图 了解读写静态随机存储器的原理 二 实验预习 1 阅读实验指导书 然后回答问题 实验所用的静态存储器由一片 6116 2K 8bit 构成
  • 计算机组成原理--基于Logisim的奇偶校验电路实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的奇偶校验电路实验 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logi
  • 计算机组成原理——存储器(一)

    存储器 一 一 存储器概述 二 存储器的分级结构 三 主存储器的技术指标 四 存储器与CPU的联系 地址总线 CPU与存储器的联系 编址方式 1 按字编址 M N 方式 2 按字节编址 五 SRAM存储器 cache 1 存储元基本结构 2
  • 计算机组成原理笔记

    CPU的功能和结构 运算器 对数据进行加工 算术逻辑单元ALU 暂存寄存器 通用寄存器 累加寄存器ACC 程序状态字寄存器PSW 移位器 计数器 控制器 取指令 分析指令 执行指令 中断处理 程序计数器PC 指令寄存器IR 指令译码器 时序
  • 计算机组成原理——指令系统题库

    指令系统题库 选择题 1 以下有关指令系统的说法中错误的是什么 A 指令系统是一台机器硬件能执行的指令全体 B 任何程序运行前都要先转化为机器语言 C 指令系统是计算机软件 硬件的界面 D 指令系统和机器语言是无关的 2 在CPU执行指令的
  • 《计算机组成原理实验》 多周期CPU

    计算机组成原理实验 多周期CPU 前言 这是中山大学2018年计算机组成原理实验中多周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara
  • 【计组笔记-5】详细测试c++中类型转换的溢出截断处理

    计组笔记 5 详细测试c 中类型转换的溢出截断处理 1 将小数赋值给float 2 将整数赋值给float 3 将整数赋值给int 3 1 算术溢出 3 2 非算术溢出 等于32位 3 3 非算术溢出 大于32位 4 将小数赋值给int 5
  • 【计组】学习笔记1.1:8421码和ASCII码

    8421码 8421码即BCD码 由于人们习惯日常使用十进制数 而计算机处理时使用的是二进制数 而两种数制相互转换十分麻烦 因此产生了8421码映射关系 其映射运算例如 1001转化为十进制数9 1 8 0 4 0 2 0 1 8 0 0
  • 计算机组成原理--基于Logisim的海明校验码解码电路实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的海明校验码解码电路 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Log
  • 面向对象编程是什么意思呢?汇总

    https blog csdn net qq 32381815 article details 79119996 面向对象思想 谈谈你对面向对象的理解 https blog csdn net qsbbl article details 71
  • 【408】计算机学科专业基础 - 计算机组成原理

    一 计算机系统概述 复习提示 本章是组成原理的概述 考查时易针对有关概念或性能指标出选择题 也可能综合后续章节的内容出有关性能分析的综合题 掌握本章的基本概念 是学好后续章节的基础 部分知识点在初学时理解不深刻也无须担忧 相信随着后续章节的

随机推荐

  • SpringCloud系列(十六)[分布式搜索引擎篇] - DSL 查询及相关性算分的学习 (部分)

    在SpringCloud系列 十五 分布式搜索引擎篇 结合实际应用场景学习并使用 RestClient 客户端 API这篇文章中我们已经对 RestClient 有了初步的了解 并且已经将一些数据进行了存储 但是这并不是我们学习 Elast
  • 批量下载文档有救了:Python下载某网站文档保存PDF

    人生苦短 我用python 最近毕业季要做毕业设计的同学真的特别多 需要大量文献 文档 PDF但是不想因为这个花money的 举起你们的双手 接下来就以某度某库为例 下载我们想要的文档并保存为PDF 源码资料电子书 点击此处跳转文末名片获取
  • c#-初级篇合集

    c 初级篇知识合集 知识点都在代码注释中 001 学习c 编程 002 变量 003 变量的类型 004 练习 定义变量储存主角信息 005 在字符串前面加上字符 006 变量的声明和赋值 007 数学运算符 008 数学运算符自加自减 0
  • Python学习笔记 - 阿里云天池Python训练营打卡(3)

    目录 1 阿里云天池Python教程链接 3 2 函数 2 1 函数定义 2 2 函数文档 2 3 help方法 2 4 函数参数 2 5 函数的返回值 2 6 变量作用域 2 7 模块 函数的导入 3 Lambda 匿名函数 3 1 La
  • 【计算机网络】【湖科大MOOC】网络层路由选择协议概述 内部网关协议RIP和OSPF的工作原理、工作过程 详细解读

    目录 网络层 6 路由选择协议 6 1 概述 6 1 1 路由选择 类别 6 1 2 因特网所采用的路由选择协议的 主要特点 6 1 3 常见的 路由选择协议 6 1 4 路由器的基本结构 6 2 内部网关协议 路由信息协议 RIP Rou
  • kali linux配置网络代理

    一 命令行终端 1 进入 etc profile d目录 新建文件proxy sh 内容如下 kali kali etc profile d cat proxy sh export proxy http 192 168 150 1 7890
  • 【Zabbix实战之部署篇】Zabbix客户端的安装部署方法

    Zabbix实战之部署篇 Zabbix客户端的安装部署方法 一 Zabbix agent2介绍 1 Zabbix agent2简介 2 Zabbix agent2优点 3 主动模式和被动模式 二 环境规划 1 Zabbix服务器部署链接 2
  • 【探索Linux】—— 强大的命令行工具 P.4(编译器 gcc/g++ 使用)

    阅读导航 前言 一 编译的四大过程 背景知识 1 预处理 Preprocessing 2 编译 Compilation 3 汇编 Assembly 4 链接 Linking 二 gcc的使用 1 概念 2 gcc主要特性和命令行选项 三 g
  • MATLAB学习各类函数归类总结笔记(主要图像处理方面)

    A开头 B开头 bwlabel函数 调用格式 L bwlabel BW n 或 L num bwlabel BW n 返回一个和BW大小相同的L矩阵 包含了标记了BW中每个连通区域的类别标签 这些标签的值为1 2 num 连通区域的个数 n
  • 手写Promise.resolve,Promise.reject, Promise.all

    promise A 规范中说明promise有三种状态 且状态一旦被改变就不能再次发生变化 const PENDING Pending const FULFILLED Fulfilled const REJECTED Rejected cl
  • 普洛斯与宁德时代签署战略合作协议;高博昌平国际研究型医院成为北京自贸区首批签约项目

    今日看点 普洛斯宣布与宁德时代签署战略合作协议 双方凭借在各自产业领域内的领先优势 组建资产管理合资公司 持有 管理和运营宁德时代电池 储能系统及其支持的各类车辆 船舶等资产 通过绿色能源资产服务化 降低物流 运输等相关企业大规模使用新能源
  • econgnition选择面向对象的样本,输出shp并在arcmap里打开,随机平均分为训练样本和测试样本

    有不懂的可以看我发的前一篇 打开软件 进行一个尺度为100的多尺度分割 进行一个类别的加 然后用它上面那个蓝色的三角尺工具 这个工具是直接指定类别的 不是用来选择样本的 在toolbar第二个选条那里选择你要的类别 比如我是vegetati
  • maven的安装和配置

    一 下载maven 1 下载地址Maven Download Apache Maven 2 将下载的文件进行解压到任意目录 linux解压用tar xvf apache maven 3 6 3 bin tar gz 3 windows配置环
  • CVE-2019-3396 Confluence RCE漏洞简单粗暴复现

    CVE 2019 3396 Confluence RCE漏洞简单粗暴复现 1 前言 网上也有很多关于该漏洞的说明和复现 不再做过多阐述 在复现该漏洞时踩了一些坑 然后发现了一个快速复现的方法 所以本篇文章介绍的是如何简单快速地复现该漏洞 想
  • Quartz 之 JobKey 源码解读

    首先 我们看下上个博文 CronTrigger 示例2 中部分打印的日志内容 INFO 17 一月 09 41 40 016 下午 MyScheduler Worker 9 com example03 SimpleJob SimpleJob
  • 2021-01-25Redis存取list

    redis存取list类型数据 首先 为了避免高并发给myql数据库增加负担 所有大多数时候会利用redis数据库解决这个问题 1 首先启动redis服务 在bin目录下打开powshell命令如下 PS D devtools Redis
  • 浅谈程序分析

    孙军 新加坡管理大学教授 研究方向为 形式化方法 软件工程 安全等 爱好 爬山 攀岩等 如果读者想了解更多有关程序分析相关的技术内容 欢迎加入编程语言技术社区 SIG 程序分析 加入方式 文末有小助手微信 添加并备注加入 SIG 程序分析
  • 获取map中第一个数据值

    为什么80 的码农都做不了架构师 gt gt gt 获取map中第一个非空数据值 param
  • Git GUI基本操作

    一 Git GUI基本操作 1 版本库初始化 gitpractise文件夹就变成了Git可以管理的仓库 目录下多了一个 git文件夹 此目录是Git用于管理版本库的 不要擅自改动里面的文件 这样会破坏Git仓库 git文件夹默认是隐藏的 如
  • 二进制编码

    前言 我们都知道 一个程序是 数据结构 算法 如果对应到组成原理或者是硬件层面上来说 算法就是我们的各种计算机指令 而数据结构就是我们对应的二进制数据 字符串的表示 从编码到数字 其实不仅数字可以用字符串来表示 最典型的例子就是字符串 最早