注册 登录
编程论坛 C++教室

[求助]一个关于进制转换的程序编程问题

hemingsheng 发布于 2007-05-21 10:53, 1190 次点击
编写函数,实现将以字符串形式存放的二进制数转换为十进制数(包括负数)
17 回复
#2
aipb20072007-05-21 12:32
楼主说明下,2进制的数是多少位呢?按int的4个byte来,还是……?
#3
neverDie2007-05-21 18:13
负数的2禁止怎么表示?
怎么判断一个2进制为负数?
#4
hemingsheng2007-05-22 07:27
回复:(aipb2007)楼主说明下,2进制的数是多少位呢?...
2进制的数位是任意的 还包括小数点``````
如"10010101.1011101"
#5
yuziguang2007-05-22 07:41
这个问题就有点深奥啊 
#6
aipb20072007-05-22 08:41
包括小数就做不来了,主要是忘了他们怎么转换的了,等待其他人吧!

要是都整数,还可以帮帮你!
#7
孤魂居士2007-05-22 22:56
有小数点也是一样的计算
如:
(101.1011)2=1*2的平方+0*2的1次方+1*2的0次方+1*2的-1次方+0*2的-2次方+1*2的-3次方+1*2的-4次方

平方打不好 全部用的汉字描述的``
#8
hemingsheng2007-05-22 23:22
回复:(孤魂居士)有小数点也是一样的计算如:(101.10...

那具体怎样定义函数呢

#9
kisscjy2007-05-22 23:23
2进制怎样表示负数呢???
#10
孤魂居士2007-05-22 23:34
以下是引用kisscjy在2007-5-22 23:23:30的发言:
2进制怎样表示负数呢???

这是个问题 请高手指教``

#11
aipb20072007-05-23 09:16
以下是引用kisscjy在2007-5-22 23:23:30的发言:
2进制怎样表示负数呢???

采用反码和补码;
比如表示-1的2进制。(为简单,假如只有4位!呵呵)
1的2进制表示 0001;
1的反码: 1110就是把上面的1变0,0变1;
1的补码: 1111就是反码加1;

所以-1的2进制表示为:1111;

一个带符号的的2进制数,最高价位是符号位,0为正,1为负!

#12
kisscjy2007-05-23 14:10

先发个正数给你看看,
负数我要想一想才可以写出来.

#include<iostream>
#include<math.h>
using namespace std;

void main()
{
char a[100];
int k,j;
double sum=0;

cout<<"输入一段2进制代码(包括小数点):\n";
cin>>a;

for(int i=0;a[i]!='.';)
{
i++;
}

k=i;

for(i=k-1;i!=0;i--) //整数部分
{
switch(a[i])
{
case '0': j=0;break;
case '1': j=1;break;
}
sum=sum+j*pow(2,k-1-i);
}

for(i=k+1;a[i]!='\0';i++) //小数部分
{
switch(a[i])
{
case '0': j=0;break;
case '1': j=1;break;
}
sum=sum+j*pow(2,k-i);
}

cout<<"转换后的十进制数为:\t"<<sum<<endl;

}

#13
kisscjy2007-05-23 14:29
以下是引用aipb2007在2007-5-23 9:16:48的发言:

采用反码和补码;
比如表示-1的2进制。(为简单,假如只有4位!呵呵)
1的2进制表示 0001;
1的反码: 1110就是把上面的1变0,0变1;
1的补码: 1111就是反码加1;

所以-1的2进制表示为:1111;

一个带符号的的2进制数,最高价位是符号位,0为正,1为负!

我想问一下当一个负小数二进制的时候,
例如-3.14,

假如它的二进制 为0011.10101(假如的话)
取反 1100.01010
加一 加在哪里??

是加在小数点前的0?
或是加在最后的一个0??

希望指教~~~

#14
hemingsheng2007-05-24 17:00
感谢12楼的kisscjy回答 ^_^
同時想請教一個問題:
定义类时
私有成员是不是自己随意设定的??
#15
kisscjy2007-05-24 17:02
你说的是不是私有成员的赋值??

如果是赋值的话,就需要用到构造函数来赋值了~~
#16
hemingsheng2007-05-24 17:04

是私有成员里面的成员表```

#17
kisscjy2007-05-24 17:21

你可以在一个类里面定义任意多,任意类型的私有成员....

应该是这样吧,我没有试过..

[此贴子已经被作者于2007-5-24 17:22:23编辑过]

#18
hemingsheng2007-05-25 12:39
回复:(kisscjy)你可以在一个类里面定义任意多,任意...

是可以定义任意多的哦 谢谢了~

1