Chương trình mình không báo lỗi. Nhưng minh debug từng câu lệnh thì nó tới khúc vong lập đó nó không chạy mà nhảy xuống cậu lệnh for in ra luôn.
#include<iostream>
#include<math.h>
using namespace std;
void doi10qua2(int n)
{
int a[32], i;
if (n > 0)
{
for (i = 0; i < 8; i++) a[i] = 0;
while (n != 0 && i >= 0)
{
a[--i] = n % 2;
n = n / 2;
}
for (i = 0; i < 8; i++)cout << a[i];
cout << endl;
}
else
{
n = abs(n);
for (i = 0; i < 8; i++) a[i] = 0;
while (n != 0 && i >= 0)
{
a[--i] = n % 2;
n = n / 2;
}
for (i = 0; i < 8; i++)
{
if (a[i] == 0)
{
a[i] = 1;
}
else
a[i] = 0;
}
// khúc nay e tìm dc phàn số bù 1 rồi .. sao nó không chịu chạy vào vào while de tìm số bù 2
int i = 7;
while (i < 0)
{
if (a[i] == 0)
{
a[i] = 1;
break;
}
else
{
a[i] = 0;
}
i--;
}
for (i = 0; i < 8; i++)cout << a[i];
cout << endl;
}
}
int main()
{
int a = pow(2, 7) - 1,
b = pow(-2, 7);
cout << "\n char la kieu so nguyen 1 byte (luu dc cac so nguyen co pham vi tu -128=-2^7 den 127=(2^7)-1)"<<endl;
cout << " so nguyen lon nhat co the luu dang thap phan la :" << a << endl;
cout << " so nguyen nho nhat co the luu dang thap phan la :" << pow(-2, 7) << endl;
cout << "so nguyen nho nhat co the luu dang nhi phan la :" << endl;
doi10qua2(b);
system("pause");
}