30/09/2018, 16:24
Bài tập về đổi từ thập phân sang nhị phân
Mình làm ntn nhưng số nó bị ngược ko biết cách nào đảo lại cho xuôi. và nếu muốn lấy số nhị phân này gán vào 1 biến thì làm ntn???
#include <stdio.h>
#include <stdlib.h>
int main()
{
int thap_phan;
int h[]= {0,1};
printf("nhap so he thap phan can doi:");
scanf("%d",&thap_phan);
while (thap_phan/2)
{
if(thap_phan%2)
{
printf("%d",h[1]);
}
else
{
printf("%d",h[0]);
}
thap_phan /= 2;
}
printf("%d",thap_phan);
return 0;
}
Bài liên quan
Mới học mà hì. tại mình có làm cái bài chuyển sang hệ 16 bài đó cũng dùng mảng cho i chạy từ 0=>15 đẻ in ra từng phần tử trong mảng nhưng ko thành đành chuyển sang đổi hệ nhị phân cho đơn giản hơn xong nhị phân mới làm lại thập lục mà xem trên wiki nó cũng dùng mảng mà ko hiểu lắm nó viết = c++. bạn dịch qua c cho mình với đc ko?
mấy cái bác nói em cũng nắm sơ sơ khi xem video của anh đạt rồi.cơ mà quay lại vấn đề chính ở đầu em hỏi ý sô bị ngược in sao cho xuôi và làm sao để lấy số đó gán cho 1 biến.
Mục đích của việc để
int h[]={0.1}
với
để làm gì vậy cậu ?
cái đó để là : printf (“1”) và printf (“0”);
cũng đc ^^ tại bệnh làm phức tạp hóa vấn đề ấy mà ^^
Bài tập này có nhiều cách giải lắm và nhìn cách a viết thì e k hiểu , Trong quyển C_aptech chỉ mới dạy hàm scan và printf đã có 1 bài tập về chuyển đổi một số nguyên hệ 10 sang hệ 2 ( thập phân sang nhị phân ) k biết có cách nào làm bài đó mà chỉ dùng 2 hàm đó không ? .
Còn bài của bạn ở trên sao in ra lại bị ngược số nhỉ :
10 = 1010
Nhưng trương trình lại tính ra là 0101 …
----Đó bài này mình đang mắc ở vấn đề bị ngược nay mà thím BreakDown trả lời gì đâu ấy . mình vừa mới nghĩ ra cách giải quyết đảo lại là gán nó vào 1 xâu rồi ta đảo xâu :v…
----mình cũng đọc cái C_aptech của anh Đạt có 2 lệnh scantf vs printf ta dùng %x thì đc thập lục. còn quả nhị phân thì chịu
A chỉ cách gán vào 1 biến hả ^^, sr e gà nên nhìn k ra
Có phải bạn cần cái này?
haha, e gà quá nên nhìn k ra, cứ tập trung ở chỗ sao nó ra ngược mà k đọc hết
—Vẫn chữa “Ngộ” đc ý của thím breakdown muốn nói gì.@@
— thứ nhất là mình muốn sau khi in đc ra số nhị phân ta gán số đó cho 1 biến như thế nào và có đc ko?
—thứ 2 mình có ghi rõ là tìm ra cách để ĐẢO NGƯỢC lại.
— thứ 3 là em thấy bác nói không sát vấn đề em hỏi cho lắm mà em thấy mấy cái bác bác nói lan man em có cảm giác như bác đang khẳng định mình biết rộng biết nhiều hơn là cố gắng cho em hiểu.
-có lẽ do em ngu dốt nên không hiểu đc ý nghĩ sâu xa của những lời bác nói nên em suy nghĩ vậy có gì không phải mong bác bỏ qua.
Tới đây hiểu nhau hơn rồi nhé:
những chỗ em chưa hiểu trong lời giải thích của bác là:
–Chỗ này bác cho xin 1 ví dụ nho nhỏ về “suất ngược mảng nữa đc” với em chưa hình dung ra đc mảng nữa là mảng gì như thế nào.
– Chỗ này thì bác giải thích cho em tại sao mảng chứa nó lại là như vậy có phải đây là cái mảng khi em in ra bị ngược đây ko?? tại sao
10^0+10^1+10^2+0^3+0^4+0^5+10^6 =đúng số nhị phân đó
**
-Em mới bắt đầu học mong các anh chị đàn anh đi trc chỉ giáo, với em cũng ngu dốt nữa nên anh anh chị nói mấy cái sơ cấp thôi ạ. em cảm ơn bác nhiều
cái đoạn thuật toán kia em hiểu rồi nhưng tại sao khi đảo ngược lại só nhị phân và lây 10^i+ vào lạ ra đúng số đó.
cái gán %2 cũng hiểu là chỉ có 0 và 1 nhương số nào sẽ là vị trí 0 cái nào là vị trí 1 trong mảng. huh
ok. còn cái ý trên anh??
@@ tự nghĩ ra. thế là nó sẽ đúng với tất cả các số nhị phân @@. impossible
Rồi cảm ơn bác nhiều…
dùng thuật toán đệ quy cũng gọn lắm
cho em thắc mắc, nó gọi lại
dec2bin
, vậy cái này có được gọi là đệ quy không nhỉMà kết quả phải đảo ngược dãy số lại mà anh
à để giải thích lại cái chỗ else tí
cái hàm trên mình viết vội quá nên nó hơi kì cục chỗ else, cơ bản là do nếu không có em ý thì không được( giả sử như x=0)
để viết lại một cái chỉnh chu đỡ kì hơn xí
Cmt này hay nè thím breakDown. ^^ cảm ơn thím lần nữa :v
#include
void ConvertToBinary(int n) /Alex says: Good to use unsigned int if u can/
{
if (n / 2 != 0) {
ConvertToBinary(n / 2);
}
printf("%d", n % 2);
}
using namespace std;
int main()
{
int n = 3;
ConvertToBinary(n);
return 0;
}
Nhưng mà nó chỉ tính được một lần, mỗi lần muốn đổi mình phải mở lại hả, có cách nào cho nó tính liên tục được không.