房地产开发公司网站建设方案,创业商机网加工项目,做网站的费用记哪个科目,小程序网站app定制开发复习本章时#xff0c;思考以下问题#xff1a;
1)在计算机中#xff0c;为什么要采用二进制来表示数据#xff1f;2)计算机在字长足够的情况下能够精确地表示每个数吗#xff1f;若不能#xff0c;请举例说明。3)字长相同的情况下#xff0c;浮点数和定点数的表示范围… 复习本章时思考以下问题
1)在计算机中为什么要采用二进制来表示数据2)计算机在字长足够的情况下能够精确地表示每个数吗若不能请举例说明。3)字长相同的情况下浮点数和定点数的表示范围与精度有什么区别4)用移码表示浮点数的阶码有什么好处
目录 1、进制与编码
1.1 进位计数法
1.2 不同进制数之间的相互转换
1二进制混合数转化为八进制或16进制
2 十进制数转换为任意进制数
1.3 定点数的编码表示
1.3.1 原码
1.3.2 反码
1.3.3 补码
1.3.4 移码
2、运算方法和运算电路
3、整数的表示和运算
4、 浮点数的表示与运算 5、校验码数据校验
5.1 奇偶校验码
5.2海明校验码
5.3 循环冗余校验码CRC
2、数据的表示与运算 2.1、进制与编码 2.1.1 进位计数法
常用的进位计数法有十进制、二进制、八进制、十六进制等。十六进制每个 数位可取0〜9、A、B、C、D、E、F中的任意一个其中A、B、C、D、E、F分别表示 10〜15。
八进制数字通常以前缀 0零加上数字表示例如八进制数 12 表示为 014。在JavaScript中你可以使用前缀 0o 或 0O 来表示八进制数。例如0o14
十六进制数字通常以前缀 0x 或 0X 开头表示例如十六进制数 1A 表示为 0x1A 2.1.2 不同进制数之间的相互转换
1二进制混合数转化为八进制或16进制
对于一个二进制混合数既包含整数部分又包含小数部分在转换时应以小数点为界。 其整数部分从小数点开始往左数将一串二进制数分为3位八进制一组或4位十六进制 一组在数的最左边可根据需要加“0”补齐对于小数部分从小数点开始往右数也将一串 二进制数分为3位一组或4位一组在数的最右边也可根据需要加“0”补齐。 2 十进制数转换为任意进制数 3BCD码二进制编码的十进制数 2.3 定点数的编码表示
定点数编码表示法主要有以下4种原码、 补码、反码和移码。
1.3.1 原码
用机器数的最高位表示数的符号其余各位表示数的绝对值。 真值零的原码表示有正零和负零两种形式即0原 00000和-0原 10000
1.3.2 反码
正数反码的定义和相应的补码或原码表示相同。负数反码的定义在绝对值按位求反。
0的表示不唯一即存在正负0
1.3.3 补码
对于正数与原码的方式一样。对于负数符号位取1,其余各位由真 值“各位取反末位加1”得到。补码转换为真值若符号位为0,与原码的方式一样。若符号位为1,真值的符号为负数值部分各位由补码“各位取反末位加1”得到。 0的表示唯一
1.3.4 移码
移码就是在真值X上加上一个常数偏置值。如果机器字长为n偏移值为 2.4、运算方法和运算电路 有需要再弄懂 此ALU的核心是带标志加法器
2.5、整数的表示和运算 有需要再弄懂 有符号数和无符号数的转换
将short int强制转换为unsigned short 只改变数值而两个变量对应的每位都是一样的。
不同字长整数之间的转换当大字长变量向小字长变量强制类型转换时系统把多余的高位部分直接截 断低位直接赋值因此也是一种保持位值的处理方法。而短字长到长字长的转换在位值相等的条件下还要补充高位的符号位可以理解为数值 的相等。
2.6、 浮点数的表示与运算 浮点数的运算1. 对阶2. 尾数求和3. 规格化4. 舍人5. 溢出判断 2.7、校验码数据校验
数据校验原因为减少和避免数据在计算机系统运行或传送过程中发生错误在数据的编码上提供了检错和纠错的支持。数据校验码的定义能够发现某些错误或具有自动纠错能力的数据编码数据校验的基本原理是扩大码距码距为任意两个合法码之间不同的二进制位的最少位数仅有一位不同时称其码距为1。码距大于等于2的数据校验码开始具有检错的能力。码距越大检错、纠错能力越强。 2.7.1、 奇偶校验码 原编码上加一个校验位码距等于2一般校验位设置在原编码的最左边或最右边奇校验码整个校验码信息位校验位中1的个数位奇数偶校验码整个校验码信息位校验位中1的个数位偶数只能发现奇数个错误不能纠错。 1奇校验 2偶校验 2.7.2、海明校验码
在奇偶校验的基础上增加校验位而得具有检错和纠错的能力
设K为有效信息的位数r为校验位的位数则整个码字的位数N应满足不等式NKr≦2r1 通常称为NK海明码设某(7,4)海明码表示的码字长度为 7 位校验位数为 3 位。 若S1S2S3000,则说明无错否则说明出错。这个数的值就是出错的位置如S1S2S3010,表示第010位出错即H2出错直接将该位取反就可以达到纠错的目的。
2.7.3、 循环冗余校验码CRC
在K位信息位后拼接R位检验位组成CRC码这种编码也称(N,R)码 通过模2的除法运算建立数据信息和校验位之间的约定关系具有很强的检错纠错能力。 通过例题来理解 例题 设生成多项式G(x)X^3X^21 ,信息码为 101001 求对应的CRC码 。 首先发送端和接受端会有一个生成多项式G(x)约定,生成多项式G(x)的最高次幂为R。任意一个二进制数码都可用一个系数为0或1的多项式与之对应。比如二进制数码 1101 对应的G(x)1*X^31*X^20*X^11*X^0 X3X21 检验位为3在发送端将要传送的K位二进制信息码左移R位低位补0。将它与生成多项式G(x)所对应的的二进制数码进行模2除法除数位多项式系数 1101产生余数 3位检验位位一个R位检验码并附在信息码后构成一个新的二进制码CRC码共KR位。 接收端收到CRC码后用生成的CRC码除以生成多项式G(x)所对应的的二进制数码若余数为0则信息码在传输过程中没有产生错误数据正确。若接受到的CRC码为C9C8C7C6C5C4C3C2C1 101001011,除以G(x)所对应的二进制码1101得到余数为010不为0说明数据在传输过程中产生错误。010210说明C2出错将C2取反即可纠正错误。
2.8、复习
2.8.1、为什么要采用二进制来表示数据
采用二进制只有0和1两个状态能够表示0、1两种状态的电子器件很多。而且简化电平变化明显。
2.8.2、计算机在字长足够的情况下能够精确地表示每个数吗若不能请举例说明。
计算机采用二进制来表示数据在字长足够时可以表示任何一个整数。
而二进制表示小数即使字长很长也不可能精确表示出所有小数只能无限逼近。例如0.1就无法用二进制精确地表示。
2.8.3、字长相同的情况下浮点数和定点数的表示范围与精度有什么区别
字长相同时浮点数取字长的一部分作为阶码所以表示范围比定点数要大而取一部分作为阶码也就代表着尾数部位的有效位数减少而定点数字长的全部位都用来表示数值本身精度要比同字长的浮点数更大。
编码位数一定编码出来的数据个数就是一定的。m位编码只能表示2m个数所以对于相同位数的定点数和浮点数来说可表示的数据个数应该一样多。
2.8.4、用移码表示浮点数的阶码有什么好处
移码的两个好处①浮点数进行加减运算时时常要比较阶码的大小相对于原码和补码移码比较大小更方便。②检验移码的特殊值(0和max)时比较容易。
2.8.5、如何表示一个数值数据计算机中的数値数据都是二进制数吗
计算机中的数值数据虽然都用二进制来编码表示但不全是二进制数也有用十进制数二进制编码的十进制数表示的。
2.8.6、在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的什么称为无符号整数的“溢出”
unsigned型数据就是无符号整数不考虑符号位。直接用全部二进制位对数值进行编码得到的就是无符号数一般都用补码表示。
int型数据就是定点整数一般用补码表示。int型数据的位数与运行平台和编译器有关一般是32位或16位。例如真值是-12的int型整数在机器内存储的机器数假定用32位寄存器寄存是1111-1111-1111-1111-1111-1111-1111-0100
long型数据和short型数据也都是定点整数只是位数不同分别是长整型和短整型数通常用补码表示。
float型数据是用来表示实数的浮点数。现代计算机用IEEE754标准表示浮点数其中32位单精度浮点数就是float型64位双精度浮点数就是 double型。
需要注意的是C语言中的int型和 unsigned型变量的存储方式没有区别都按照补码的形式存储在不溢出范围内的加减法运算也是相同的只是int型变量的最高位代表符号位而unsigned型中的最高位表示数值位两者在C语言中的区别体现在输出时到底是采用%d还是采用%u。
对于无符号定点整数来说若寄存器位数不够则计算机运算过程中一般保留低n位舍弃高位。这样会产生以下两种结果。 ①保留的低n位数不能正确表示运算结果。在这种情况下意味着运算的结果超出了计算机所能表达的范围有效数值进到了第n1位称此时发生了“溢出”现象 ②保留的低n位数能正确表达计算结果即高位的舍去并不影响其运算结果。
如何判断一个浮点数是否是规格化数
为了使浮点数能尽量多地表示有效位数一般要求运算结果用规格化数形式表示。“规格化浮点数的尾数小数点后的第一位一定是个非零数。因此对于原码编码的尾数来说只要看尾数的第一位是否为1就行
2.8.7、浮点数如何进行舍入
舍入方法选择的原则是①尽量使误差范围对称使得平均误差为0,即有舍有入以防误差积累。②方法要简单以加快速度。 IEEE754有4种舍入方式。 ①就近舍入舍入为最近可表示的数若结果值正好落在两个可表示数的中间则一般选择舍入结果为偶数。 ②正向舍入朝∞方向舍入即取右边的那个数 ③负向舍入朝-∞方向舍入即取左边的那个数。 ④截去朝0方向舍入即取绝对值较小的那个数
2.8.8、代计算机中是否要考虑原码加减运算如何实现?
因为现代计算机中浮点数采用IEEE754标准所以在进行两个浮点数的加减运算时必须考虑原码的加减运算因为IEEE754规定浮点数的尾数都用原码表示。 原码的加减运算可以有以下两种实现方式 1)转换为补码后用补码加减法实现结果再转换为原码。 2)直接用原码进行加减运算符号和数值部分分开进行具体过程见原码加减运算部分。