J计算机的进制和码制(转载自理性的浪漫)
Monday, 16. January 2006, 12:13:35
10进制是我们日常使用也是最好理解的.102 就是1后面两个0,而其它进制也是一样,比如27=128写成二进制也10000000
10进à2进 或其它进制转换方法是整数部分除r(进制)取余.小数部分乘r取整.
由2进制转换成10进制比较容易些,其它进制转换成10进制可以选择先转换成2进制再转换,也可以乘幂的形式转换,特别是针对非2的幂,比如5进制或7进制.转换的时候,小数部分分别是2-1 , 2-2, 2-3(针对2进制)
码制:
这部分比较复杂,计算机表示数据有两种方法,分别是定点和浮点.
而计算机内部表示数据的形式又可以分成原码, 反码, 补码,移码. 定点整数(小数)和浮点数的表示方法又是不同的,针对定点整数(小数):
假设机器码长度为8, 思考这些码制的方法是用2进制, 无论几进制的数,先转化成2进制.
原码,反码,补码是有符号位的,其最高位为符号位, 1代表负, 0代表正.在int型数据中,232是不可以逾越的.因为32个1的二进制是代表负数. 移码是最特殊的,它的符号位完全相反
求原码的时候负定点整数和正定点整数的区别只在符号位, 如第一条所示.所有正定点整数, 定点小数的原码,反码, 补码都是其本身!.整数和小数的区别在于,
1*** ****(把整数转换成二进制然后从右向左)
如-6的原码是 1000 0110(缺位补0)
1*** ****(把小数转换成二进制后从左向右进行填充)
如-0.8125的原码的求解过程是:
-0.8125 à 0.64 8进制à110 010 2进制
原码就是1110 0100(缺位补0)
正数的反码补码是不变的,负数的是符号位不变,而其它位取反成反码, 反码的最后一位+1成补码,补码的符号位取反为移码
10进à2进 或其它进制转换方法是整数部分除r(进制)取余.小数部分乘r取整.
由2进制转换成10进制比较容易些,其它进制转换成10进制可以选择先转换成2进制再转换,也可以乘幂的形式转换,特别是针对非2的幂,比如5进制或7进制.转换的时候,小数部分分别是2-1 , 2-2, 2-3(针对2进制)
码制:
这部分比较复杂,计算机表示数据有两种方法,分别是定点和浮点.
而计算机内部表示数据的形式又可以分成原码, 反码, 补码,移码. 定点整数(小数)和浮点数的表示方法又是不同的,针对定点整数(小数):
假设机器码长度为8, 思考这些码制的方法是用2进制, 无论几进制的数,先转化成2进制.
原码,反码,补码是有符号位的,其最高位为符号位, 1代表负, 0代表正.在int型数据中,232是不可以逾越的.因为32个1的二进制是代表负数. 移码是最特殊的,它的符号位完全相反
求原码的时候负定点整数和正定点整数的区别只在符号位, 如第一条所示.所有正定点整数, 定点小数的原码,反码, 补码都是其本身!.整数和小数的区别在于,
1*** ****(把整数转换成二进制然后从右向左)
如-6的原码是 1000 0110(缺位补0)
1*** ****(把小数转换成二进制后从左向右进行填充)
如-0.8125的原码的求解过程是:
-0.8125 à 0.64 8进制à110 010 2进制
原码就是1110 0100(缺位补0)
正数的反码补码是不变的,负数的是符号位不变,而其它位取反成反码, 反码的最后一位+1成补码,补码的符号位取反为移码