这里主要关注二进制和十六进制。二进制符号为0b,一般表示为0b0011,十六进制符号为0x或H,可表示为0x18F或18FH。(十六进制可表示0-15,其中10-15用A-F来表示)。
R 进制整数转十进制采用位权展开法,用 R 进制数的每一位乘以 R 的 n 次方。n 是变量,从 R 进制数的整数最低位开始,依次为 0 , 1 , 2 , 3 ... 累加。
十进制整数除以R,记录每次所得余数,若商不为 0,则继续除以 R,直至商为 0,而后将所有余数从下至上记录,排列成从左至右顺序,即为转换后的R进制数。
m 进制转 n 进制类似。先将 m 进制转化为十进制数,再将十进制数转化为 n 进制数,中间需要通过十进制中转,但下面两种进制间可以直接转化:
机器数:各种数值在计算机中表示的形式,其特点是使用二进制计数制,数的符号用 0 和 1 表示,小数点则隐含,不占位置。
机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为 0,负数符号位为 1。
定点表示法分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定:
真值:机器数对应的实际数值。
带符号数有下列编码方式,当真值为 -45 时:
原码:一个数的正常二进制表示,最高位表示符号,数值 0 的源码有两种形式 +0 (00000000) 和 -0 (10000000)。-45 对应原码为10101101;
反码:正数的反码即原码,负数的反码是在原码的基础上,除符号位外,其他各位按位取反。数值 0 的反码也有两种形式 +0 (00000000)、-0(11111111)。-45 对应反码为11010010;
补码:正数的补码即原码,负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位 +1,若有进位则产生进位。因此数值 0 的补码只有一种形式 +0=-0=00000000。-45 对应补码为11010011;
移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。-45对应移码为 01010011。
浮点数表示方法为 N=F*2^E,其中 E 称为阶码,F 称为尾数。类似于十进制的科学计数法,如 85.125 = 0.85125*10^2,二进制如 101.011=0.101011*2^3.
在浮点数的表示中,阶码为带符号的纯整数,尾数为带符号的纯小数,要注意符号占最高位(正数 0 负数 1),其表示格式如下:
阶符 阶码 数符 尾数
很明显,与科学计数法类似,一个浮点数的表示方法不是唯一的,浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定。
尾数的表示采用规格化方法,也即带符号尾数的补码必须为 1.0xxxx(负数)或者 0.1xxxx(正数),其中 x 可为 0 或 1。
浮点数的运算:
码距:就单个编码 A:00 而言,其码距为 1,因为其只需要改变一位就变成另一个编码。在两个编码中,从 A 码到 B 码转换所需要改变的位数称为码距,如 A:00 要转换为 B:11,码距为 2。一般来说,码距越大,越利于纠错和检错。
奇偶校验码:在编码中增加 1 位校验位来使编码中 1 的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为 2。奇偶校验只能检 1 位错,并且无法纠错。
CRC 只能检错,不能纠错。使用 CRC 编码,需要先约定一个生成多项式G(x)。生成多项式的最高位和最低位必须是 1。假设原始信息有 m 位,则对应多项式 M(x)。生成校验码思想就是在原始信息位后追加若干校验位,使得追加的信息能被 G(x) 整除。接收方接收到带校验位的信息,然后用 G(x) 整除。余数为 0,则没有错误,反之则发生错误。
海明码本质也是利用奇偶性来检错和纠错的校验方法,构成方法是在数据位之间的确定位置上插入 k 个校验位,通过扩大码距实现检错和纠错。设数据位是 n 位,校验位是 k 位,则 n 和 k 必须满足关系 2^k - 1 >= n + k。
本文来源:程序之心,转载请注明出处!
本书是国际知名的高等学校计算机科学及相关专业基础课教材,也是非常受欢迎的计算机入门读物。该教材是一本百科全书式的计算机专业入门指南,涉及计算机科学的方方面面。虽然读者对象是计算机专业的学生,但这本书深入浅出、引人入胜,勾画出了计算机科学体系的框架,可以为有志于IT行业的学生奠定计算机科学知识的基础,架设进一步深入专业理论学习的桥梁。
最新内容
© 2016 - 2024 chengxuzhixin.com All Rights Reserved.