5. 溢出判断 判断浮点数的溢出,我们采用双符号法,但是与定点数有一点不同:当尾数之和出现01.XXXXXX或者10.XXXXXX的时候,并不能直接下结论溢出,应当再右规一次,才能判断是否真的溢出,且规后发现其阶码的符号位出现01或者10的时候,说明溢出
浮点数的加减运算(实例)下面是一道2009年的408的考试真题:
我们先看看,首先第一步没得说,先写出X和Y的二进制表示(分数转二进制很好转,百度一下就行,有个百度经验,用我们平时的同底数幂相除来算,很是方便),注意含有两个符号位:
然后按步骤做题:
这一步我们发现这个时候X和Y的阶码已经相同(00,111)了。
这里注意,尾数右规是指尾数部分右规,那么尾数的符号位也是在尾数中的。
补充知识:
大端对齐与小端对齐
大端对齐模式:是指一个字节中的高位字节放在这个字节区域内的低地址处。
小端对齐模式:是指一个字节中的低位字节放在这个字节区域内的低地址处
将一个32位的16进制数0x12345678存放在内存中(机器按字节编址)
实际上,小端模式就是从后面往前面存储的。
常用的进制转换数及一些技巧127 = 7FH = 0111 1111B
128 = 80H = 1000 0000B
255 = FFH = 1111 1111B
65535 = FFFFH = 1111 1111 1111 1111B
算大的数可以用16进制数方便计算,十进制转二进制也可以转换为16进制再转换为2进制。
按边界对齐按边界对齐?简单的说,对于int型而言,起始地址为4的倍数;对于char类型而言,起始地址为任意字节皆可;对于short类型而言,起始地址为2的倍数;对于结构体而言,对齐方式为结构体内类型最大的字节量。
强制类型转换第一道题
分析:
算式显然是 int = int +short 类型,一定存在强制类型转换,那么short ->int 需要添加扩展位,注意,机器中的数用补码表示的,所以结果用补码运算。过程如下:
图中虚线左边的是16进制数,右边是2进制数,由于答案是16进制数,我们便化为16进制数进行加减。
同时,特别注意,负数的补码,是除了符号位以外取反后加1 正数的补码等于原码等于反码
考点:强制类型转换,码制间的转换运算