赞
踩
前置知识:二进制与十进制相互转换、原码反码补码移码
用基本的方法:通过十进制转化为二进制,二进制转为原码,再转反码,再转补码。。。。
详见:http://blog.csdn.net/qq_35025383/article/details/73456610
补充:十进制小数转二进制
首先将一个小数如: 235.725 的小数部分取出,即:0.725,将其乘以进制数二进制就乘以 2 后得到1.45,取其整数部分1为二进制小数的第一项(十分位),在将小数部分 0.45 乘 2 得 0.9,取其整数部分为二进制小数的第二位(百分位)0,在将其小数部分 0.9 乘 2,得 1.8,取其整数部分为二进制小数的第三位(千分位)1,取其小数部分 0.8 再乘 2……以此类推,直到值为0或形成循环小数则停止。
一、已知的二进制是以0开头的二进制补码
也就是说这个二进制补码的左边最高位是以0开头的。最高位是0,在在二进制补码中表示该数是正数。而正的二进制补码与十进制的对应关系是最简单的,直接按照二进制与十进制的对应转换法则转换就行了。
例如:已知二进制补码:001110、011010、011、01010、01110010,求与之对应十进制。
001110:(+0)* (2^5) + 0*(2^4) + 1*(2^3) + 1*(2^2) + 1*(2^1) + 0*(2^0) = 14;
011010::(+0)* (2^5) + 1*(2^4) + 1*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) = 26;
011:(+0)(2^2) +1(2^1) + 1*(2^0) = 3;
01010:(+0)(2^4) + 1(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) = 10;
01110010:(+0)* (2^7) + 1*(2^6) +1* (2^5) + 1*(2^4) + 0*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) = 114;
二、已知的二进制是以1开头的二进制补码
也就是说这个二进制补码的左边最高位是以1开头的。最高位是0,在在二进制补码中表示该数是负数。我们把(+0)改成(-1)便可
例如:已知二进制补码:101110、111010、111、11010、11110010,求与之对应十进制。
101110:(-1)* (2^5) + 0*(2^4) + 1*(2^3) + 1*(2^2) + 1*(2^1) + 0*(2^0) = -18;
111010::(-1)* (2^5) + 1*(2^4) + 1*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) = -6;
111:(-1)(2^2) +1(2^1) + 1*(2^0) = -1;
11010:(-1)(2^4) + 1(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) = -6;
11110010:(-1)* (2^7) + 1*(2^6) +1* (2^5) + 1*(2^4) + 0*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) = -14;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。