#1024程序员节 | 征文#
计算机中的码制是指用于表示数据的符号系统,通常将信息转换为二进制形式,以便在计算机系统中处理和存储。
下面总结了计算机中常见的码制:
二进制编码:一种最基本的编码方式,计算机内部的所有数据都被表示成二进制(0和1),是计算机系统中最基础的编码形式,码制基于此展开。
原码:
表示带符号整数的二进制编码方式,它采用最左边的一位符号位(0为正,1为负)
来表示数值的符号,其余位表示数值的大小。
由于在进行加减法运算时,符号位和数值位需要分开处理,增加了计算复杂度,而且因为原码的符号位独立于数值位,这导致00000000
表示 +0,10000000
表示 -0,所以原码
在计算机中并不常用于处理整数运算,而计算机更常用补码
进行加减运算。
补码:
补码
也是一种用于表示带符号整数的二进制编码方式。
补码的符号位依然是最高位,0
表示正数、1
表示负数。
正数的补码与原码相同:+5 的补码就是二进制的00000101
负数的补码等于其反码
加1,反码通过对正数部分的每一位取反得到。
例如,-5的反码是对5的二进制表示0000 0101
取反,得到1111 1010
,那么其补码就是1111 1011
反码:
是一种表示带符号整数的二进制编码方法,主要用于表示负数,如果表示正数,就与原码相同;表示负数,就将正数部分的每一位取反。
例如,+5
原码:0000 0101
(第一个 0 表示正数,后面的部分表示数值 5)。
反码:0000 0101
(正数的反码和原码相同)。
对于 -5
原码:1000 0101
(符号位 1 表示负数,后面的部分表示数值 5)。
反码:将数值部分 0000 0101
取反,得到 1111 1010
,这就是 -5 的反码。
移码:
移码的基本思想是通过给数字加上一个固定的偏移量(通常是2n-1
,其中 𝑛是编码的位数),将符号数转换为非负数表示,从而避免直接处理负数。移码可以方便地进行比较操作,而不需要特别处理符号位。
对于 4 位移码,即移码偏移量为23=8
对于正数 +5,移码表示为 5 + 8 = 13,对应二进制为 1101
。
对于负数 -3,移码表示为 -3 + 8 = 5,对应二进制为 0101
。
BCD码:
BCD码是一种将十进制数字的每一位单独编码为其二进制表示的数字编码,将每个十进制数字都用独立的四位二进制数表示。
8421码
:常见的BCD码的常见形式,每个十进制数字(0 到 9)用四位二进制数表示。
余3码
:一种特定的 BCD 码,是在8421码的基础上进行的一种变换,主要特点是每个十进制数字的8421码值加上3,得到的结果就是余3码的值。
BCD码还包含不常用的2421码
,5211码
等
ASCII码:
ASCII(American Standard Code for Information Interchange 美国信息交换标准代码)码是一种字符编码标准,用于将文本字符转换为计算机可以理解的数字表示。
一种7位或8位的字符编码,用于表示英文字母、数字和常用符号。
Unicode统一码:
Unicode
是一种计算机字符编码标准,旨在为全球所有语言的字符提供统一的编码方式。与ASCII
码相比,Unicode
的字符集更为广泛,能够表示几乎所有书写系统中的字符,包括现代语言、古代语言、符号、表情符号等。
Unicode 支持超过 143,000 个字符,涵盖了 150 多种书写系统,包括:拉丁字母,汉字(中文字符),日文,阿拉伯文,希腊文,各种符号和标点符号。
格雷码:
一种二进制编码方式,相邻的两个数只相差一个二进制位,在数字电路、编码器和传感器中,能够有效减少在数值变化时的错误和干扰。
奇偶校验码:
奇偶校验码是一种简单的错误检测机制,用于在数据传输或存储过程中检测是否发生了错误。奇偶校验通过添加一个额外的位(校验位)来实现,校验位的值根据数据中1的个数决定。
原理:
奇校验:在数据位中添加一个校验位,使得所有的1的个数为奇数;
偶校验:在数据位中添加一个校验位,使得所有的1的个数为偶数;
海明码:
一种用于错误检测和纠正的编码方法,能够检测并纠正数据传输或存储过程中的单个错误,并能够检测到双重错误。
除此之外,还有CRC(循环冗余检查码)
,曼彻斯特编码
,NRZ(非归零编码)
,Base64
等编码。