Viết chương trình nhập vào 1 dãy 16 bit nhị phân (có dấu), chuyển đổi dãy bit nhị
phân sang số thập phân tương ứng.
Em giải bằng phương pháp bù 1 như sau:
#include <iostream>
#include <math.h>
using namespace std;
void henhiphan(int n)
{
int i = 0, dec = 0, k = 0, m = n, p, a[50];
while (m != 0)
{
m /= 10;
i++;
}
p = n;
if (i < 15)
{
while (k != 16)
{
a[k] = p % 10;
p = p / 10;
if (a[k] == 0)
a[k] = 1;
else
{
a[k] = 0;
}
k++;
}
for (int q = k - 1; q >= 0; q--)
{
dec += a[q] * pow(2, q);
}
dec = -dec;
cout << "dec = " << dec;
}
else
{
while (k != 16)
{
a[k] = p % 10;
p /= 10;
k++;
for (int q = k - 1; q >= 0; q--)
{
dec += a[q] * pow(2, q);
}
}
}
cout << "dec = " << dec;
}
int main()
{
int n;
cout << "Nhap so nguyen he nhi phan: "; cin >> n;
henhiphan(n);
return 0;
}
Kết quả của em bị sai mọi người xem giúp em code bị sai ở đâu với. Em cám ơn nhìu ạ
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?