怎样到提供电子邮件的网站注册,广东营销式网站,山西百度推广开户,网站打开不了怎样做文章目录1 进制转换2 定点数表示及其运算2.1 定点数表示2.1.1 真值→补码2.1.2 补码→真值2.1.3 [XT]补 →[-XT]补2.1.4 真值、原码、反码、补码转换关系图形总结2.2.4 移码2.2 定点数运算2.2.1 移位运算2.2.2 定点数加减运算2.2.3 溢出判断判溢出方法一判溢出方法二判溢出方法…
文章目录1 进制转换2 定点数表示及其运算2.1 定点数表示2.1.1 真值→补码2.1.2 补码→真值2.1.3 [XT]补 →[-XT]补2.1.4 真值、原码、反码、补码转换关系图形总结2.2.4 移码2.2 定点数运算2.2.1 移位运算2.2.2 定点数加减运算2.2.3 溢出判断判溢出方法一判溢出方法二判溢出方法三3 浮点数及其运算3.1 浮点数表示3.2 浮点数规格化3.3 规格化浮点数的特点3.4 IEEE754 标准3.5 浮点数加减3.5.1 浮点数的加减运算实例3.5.2 舍入3.6 浮点数强制类型转换1 进制转换
任意进制→十进制 已知K、r、n 按权展开相加法 十进制→任意进制 除基取余法 乘基取整法 进制之间的转换 分组转换 2n进制之间的转换二进制、四进制、八进制、十六进制 二进制一四进制、八进制、十六进制n位一组每组转换成对应进制的符号位数不够补左边最高位0和右边最低位0 四进制、八进制、十六进制一二进制 每位写成对应的二进制形式 BCD码 用途可以实现二进制十进制的快速转换一一对应 8421码4位一组的二进制表示十进制对应的符号 01234567890000000100100011010001010110011110001001遇到8421码某组上的计算产生超过1001时需进行加60110进行结果修正 2 定点数表示及其运算 小数点位置约定在固定位置的数称为定点数 小数点位置约定为可浮动的数称为浮点数 2.1 定点数表示
定点数可分为无符号数和有符号数 无符号数整个机器字长的全部二进制位均为数值位没有符号位相当于数的绝对值。无符号数表示范围n位的无符号数表示范围为0~2n-1 有符号数对应真值和机器数
真值和机器数
2.1.1 真值→补码 正数[X]原[X]反[X]补 正数原反补一样负数 求补码原符号位不变数值部分按位取反末尾1 求反码符号位不变数值位按位取反 2.1.2 补码→真值
按位取反1 [XT]补 1 0110100 [XT] -10010111 -1001100 2.1.3 [XT]补 →[-XT]补
连同符号位各位取反末尾1 [XT]补1 0110100 [-XT]补 0 1001100 2.1.4 真值、原码、反码、补码转换关系图形总结 2.2.4 移码
浮点数阶码用移码表示移码只用来表示定点整数 设E为阶码阶码的移码表示位n位[E]移2n-1E2n-1为偏置常数
2.2 定点数运算
2.2.1 移位运算 r进制 右移n位÷ rn 左移n位 × rn 机器数采用无符号数逻辑移位 逻辑左移时高位移丢低位添0逻辑右移时低位移丢高位添0 机器码采用有符号数算术移位 算术移位左移相当于乘以基数右移相当于除以基数 符号位不参与移位
10110101 真值-53
左移1位丢01110101 0 真值-106
右移1位丢110 011010 真值-26 假设不丢110011010.1 真值-26.5
再左移1位丢111010100 真值-84 假设不丢11111010100 真值-212
再右移1位丢010001101 真值-13结论原码算术移位左移丢1运算出错右移丢1影响精度。
正数原码、补码、反码一样→左移、右移都补0 负数反码1——原码0
2.2.2 定点数加减运算 补码的主要作用两个有符号数可以直接相加 加减运算基本思路 转换成xy的形式计算[x]补[y]补 例题设机器字长为8位含1位符号位A15B-24求[AB]补和[A-B]补 走捷径十进制运输完毕将结果转换为补码 也可以先转化为补码再将补码进行符号扩展 [AB]补[A]补[B]补000011111110100011110111 补码11110111对应原码10001001 真值就是-915-24-9 [A-B]补[4]补[-B]补000011110001100000100111 补码00100111对应真值39,15--2439 [-B]补[B]补连同符号位一起取反加1
2.2.3 溢出判断 正溢出两个正数做加法得负数 负溢出两个负数做加法得正数 例A15B-34C124求[AC]补和[B-C]补 [AC]补0 00011110 11111001 10001011 真值-11→正溢出 [B-C]补1 1010000 00010010 1101100 真值108→负溢出 判溢出方法一
采用一位符号位设A的符号为AsB的符号为Bs运算结果的符号为Ss则溢出逻辑表达式为 V表示含义[As为1且Bs为1且Ss为0] 或 [As为0且Bs为0且Ss为1] 若V0表示无溢出 若V1表示有溢出。 补充逻辑表达式 与如ABC表示A与B与C仅当A、B、C均为1时ABC为1 A、B、C中有一个或多个为0则ABC为0或如ABC表示A或B或C仅当A、B、C均为0时ABC为0 A、B、C中有一个或多个为1则ABC为1 判溢出方法二
采用一位符号位根据数据位进位情况判断溢出
符号位的进位Cs最高数位的进位C1正溢出01负溢出10
即Cs与C1不同时有溢出
处理“不同”的逻辑符号异或 溢出逻辑判断表达式为 若V0表示无溢出 V1表示有溢出。 补充异或 判溢出方法三
采用双符号位配合补码 正数符号为00负数符号为11 [AC]补000001111001111100010001011→正溢出 [B-C]补111101000110000100101101100→负溢出 记两个符号位为Ss1Ss2则 若V0表示无溢出 若V1表示有溢出。 利用双符号位计算[AB]补和[A-B]补 [AB]补000001111111101000111110111 [A-B]补000001111000011000000100111 采用双符号位的移位运算低位符号位参与移位高位符号位代表真正的符号
111110111 右移1位 111111011 //低位符号位参与右移对于负数补码符号位空出的部分补1
000100111 左移1位 001001110 //左移一位数值位最高位0移到符号位低位数值位低位空出的部分则补0
000100111 左移2位 010011100 正溢出3 浮点数及其运算
3.1 浮点数表示
任意一个二进制数X可以表示为 X-1S× M × RE S取值为0或1用来决定X的符号 M是一个二进制定点小数称为数X的尾数 E是一个二进制定点整数称为X的阶码或指数 R是基数可以取值为 2、4、16 阶码常用补码或移码表示 尾数常用原码或补码表示 阶码E反映浮点数的表示范围及小数点的实际位置尾数M的数值部分的位数n反映浮点数的精度。 例阶码、尾数均用补码表示求b的真值 如果尾数部分只存储1001怎么处理----→规格化
3.2 浮点数规格化 规格化规定尾数的最高数位必须是一个有效值。对于二进制来说最高位数1有效对于其他进制不是0则有效 左规当浮点数运算的结果为 非规格化时 要进行规格化处理将尾数左移一位阶码减1基数为2时。 右规当浮点数运算的结果尾数出现 溢出双符号位为01或10 时将尾数右移一位阶码加1基数为2时。 例a01000.1001b01000.1000求ab a22 × 00.1001 b22 × 00.1000 ab22 × 00.100122 × 00.1000 22 ×00.100100.1000 22 × 01.0100 →尾数溢出右规 23 × 00.1010 3.3 规格化浮点数的特点
规格化浮点数的尾数M的绝对值应满足1/r|M|1 如果r2则有1/2M1
原码规格化后 正数为0.1××…×的形式其最大值表示为0.11…1最小值表示为0.10…0。 尾数的表示范围为 1/2≤M≤1-2-n。负数为1.1××.…×的形式其最大值表示为1.10…0最小值表示为1.11…1。 尾数的表示范围为 -1-2-n≤M≤ -1/2。 补码规格化后 正数为0.1××…×的形式其最大值表示为0.11…1最小值表示为0.10…0。 尾数的表示范围为 1/2≤M≤1-2-n。负数为1.0××.…×的形式其最大值表示为1.01…1最小值表示为1.00…0。 尾数的表示范围为 -1≤M≤ -1/22-n。 3.4 IEEE754 标准 尾数规格化最高位肯定为1若尾数原码xx...x则尾数是1.xx...x 阶码部分用移码表示的由移码得真值要减去偏置值 短浮点数 长浮点数 IEEE754 标准下短浮点数和长浮点数的真值
IEEE 754 标准一些规定短浮点数为例 E0且M0则真值为0E0且M≠0为非规格化数真值 -1s×0.M×2-1261≤E≤254时真值 -1)s×1.M×2E-127E255且M≠0时阶码全1尾数不为0真值为NaN非数值E255且M0时真值为正无穷或负无穷看符号位 IEEE 754浮点数表示范围 3.5 浮点数加减
浮点数加减运算步骤 对阶 一般在对阶之前就有必须要把真值转化为机器数的步骤即用补码表示阶码和尾数 尾数加减规格化舍入判溢出 3.5.1 浮点数的加减运算实例
例已知十进制数X-5/256、Y59/1024按机器补码浮点运算规则计算X-Y结果用二进制表示浮点数格式如下阶符取2位阶码取3位数符取2位尾数取9位 先进行格式转换用补码表示阶码和尾数 将X的阶码转化为机器数-101 补码1 011再变为双符号位阶符取两位 11 01111 代表负00代表正数值部分阶码3位不需要扩展将X的尾数转化为机器数-0.101 补码1.011 再变为双符号位数符取两位11.011尾数取9位则扩展到9位11.011000000小数低位添0整数高位添0 转化完毕XY机器数表示X:11 011,11.011000000 Y:11 100,00.111011000 转化完接下来就是对阶 对阶 对阶目的使两个数的阶码相等小阶向大阶看齐尾数每右移一位阶码加1 ①求阶差[△E]补[X阶]补[-Y阶]补110110010011111知△E-1被减的数转化为相反数的补码形式即[Y]补→[-Y]补→连同符号位按位取反末尾1 ②对阶X 向Y看齐X1101111.011000000→1110011.101100000X尾数右移1位阶码1 尾数左移/右移双符号位也要参与移位 接下来进行尾数加减原理就是提取公因式 尾数加减 求 X-Y先求-Y补码阶码部分不变尾数调整为相反数补码即连同符号位按位取反末尾1 [-Y]补:11100,11.000101000 X-Y11100,10.110001000 机器数操作不理解可以把真值操作写在旁边对比 算出的结果符号位10溢出了需要右规 规格化 X-Y11100,10.110001000→11101,11.011000100 对应真值运算 规格化之后观察阶码阶符是否还保持正常情况00或11则此次运算不溢出若规格化后双符号位表现出溢出模式10或 01此次运算一定溢出在加减处溢出不一定是溢出只有在规格化以后还是溢出才是真正溢出 舍入 这里无舍入因为尾数右移时候末尾丢的是一个0不影响整个数值运算 判溢出 此处正常阶码11无溢出 所以结果真值为2-3×-0.10011112
3.5.2 舍入
“0”舍“1”入法类似于十进制数运算中的“四舍五入”法即在尾数右移时被移去的最高数值位为0则舍去被移去的最高数值位为1则在尾数的末位加1。这样做可能会使尾数又溢出此时需再做一次右规。恒置“1”法尾数右移时不论丢掉的最高数值位是“1”还是“0”都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。
例两浮点数加减后结果为1110010.110001011。此时肯定需要右规 采用0舍1入1110010.110001011→1110111.011000101 1末尾1丢弃需要1 →1110111.011000110 末尾1后进位 恒置11110010.110001011→1110111.011000101 1 →1110111.011000101 1 3.6 浮点数强制类型转换
类型16位机器32位机器64位机器char888short161616int163232long323264long long646464float163232double646464char →int→long →double float →double 范围、精度从小到大转换过程没有损失 32位 int表示整数范围-231-231-1有效数字32位 float表示整数及小数范围 士[2-126 ~~ 2127×2-2-23]有效数字23124位 int→float可能损失精度 float →int可能溢出及损失精度