十进制整(小)数与二进制补码相互转换

来源:互联网 发布:淘宝开店 平板 编辑:程序博客网 时间:2024/06/05 19:09

前置知识:二进制与十进制相互转换、原码反码补码移码

十进制整数转二进制补码

用基本的方法:通过十进制转化为二进制,二进制转为原码,再转反码,再转补码。。。。
详见: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;

原创粉丝点击