2进制怎样表示负数呢???
采用反码和补码;
比如表示-1的2进制。(为简单,假如只有4位!呵呵)
1的2进制表示 0001;
1的反码: 1110就是把上面的1变0,0变1;
1的补码: 1111就是反码加1;
所以-1的2进制表示为:1111;
一个带符号的的2进制数,最高价位是符号位,0为正,1为负!
Fight to win or die...
先发个正数给你看看,
负数我要想一想才可以写出来.
#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;
}
采用反码和补码;
比如表示-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??
希望指教~~~