注册 登录
编程论坛 VC++/MFC

关于怎么十进制转换负二进制?

qqzyh1234 发布于 2014-06-18 19:44, 725 次点击
十进制转换负二进制的公式:15=1*(-2)^4+0*(-2)^3+0*(-2)^2+1*(-2)^1+1*(-2)^0
                               =10011(-2)
    以上就是十进制转换负二进制的公式,请问10011怎么得来的?
5 回复
#2
邵帅2014-06-24 17:16
语言只是工具;算法才是王道。

首先看一下十进制转化为二进制的方法:
1. 十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

所谓-2进制实际上也是按照2进制的元素来写的(0和1),因此根据10进制转化为2进制的方法可以得到10进制转化为-2进制的方法,我给你来一遍你自己总结;
15/(-2)=-7,余1
-7/(-2)=4,余1
4/(-2)=-2,余0
-2/(-2)=1,余0
1/(-2)=0,余1
因为结果为0,到此终止,按逆序取余数即10011,明白了没有?

[ 本帖最后由 邵帅 于 2014-6-28 15:24 编辑 ]
#3
albbad2014-06-24 23:10
学习!学习!
#4
qqzyh12342014-06-27 18:53
-7/-2应该是得3余1,负数除负数应该得正数吧?
#5
邵帅2014-06-28 15:27
回复 4 楼 qqzyh1234
不好意思,我的大意,现更改如下:
15/(-2)=-7,余1
-7/(-2)=4,余1
4/(-2)=-2,余0
-2/(-2)=1,余0
1/(-2)=0,余1

因为模为2(-2)时元素必须为0和1,因此余数必须为0或者1.
#6
qqzyh12342014-06-29 12:35
那么负八进制怎么转化为负十进制?
负十进制怎么转化为负二进制?




[ 本帖最后由 qqzyh1234 于 2014-6-29 16:21 编辑 ]
1