01/10/2018, 11:33
Xin hỏi bài chuyển đổi cơ số n
Làm sao chuyển 1 số tự nhiên sang một cơ số n ,
Em mới học chưa rành nhiều thứ , anh chị giúp đỡ ! tham khảo google có đoạn code sau
public static void doiCoSo(int n,int base){
if(n>=base) doiCoSo(n / base, base);
if(n % base>9) System.out.printf("%c",n%base+55);
else
System.out.print((n % base));
}
public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;
int n=0;
while(!check){
System.out.print(" ");
try{
n= input.nextInt();
check= true;
}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();
}
}
return (n);
}
public static void main(String[] args) {
System.out.println("Nhap n");
int n= nhap();
System.out.println("Nhap vao co so can chuyen sang b");
int b= nhap();
System.out.println("So " +n+ " chuyen sang co so " +b+ " thanh: ");
doiCoSo(n,b);
}
}
em không hiểu tại sao n%base >9 ?? là sao
tại sao n %base phải + 55
xin cảm ơn mọi người giúp
Bài liên quan
Khi chuyển từ hệ 10 sang hệ
base
thìtương đương với
n % base có thể bằng 10, 11, 12,...
Mà theo quy ước
10 -> A, 11 -> B,...
-> ta sẽ in ra kí tự có mã ASCII làn % base + 55
(ỉn ra các chữ in hoa).xin cảm ơn anh những n%base em vẫn không hiểu lắm
Bạn biết cách chuyển đổi hệ cơ số 10 sang hệ cơ số bất kì bằng tay chưa? Nếu chưa thì bạn tự tìm hiểu lại nhé.
Bạn làm thử với hệ thập phân xem.
Khám phá: khi chia cho 10 (1 chục 15 nha) thì cắt bỏ 1 chữ số bên phải, nhân 10 thì thêm 1 chữ số 0 bên phải. Giờ bạn trừ ra có phải ra ngay chóc chữ số đơn vị không giờ lấy được hàng đơn vị rồi.
Muốn tìm hàng chục thì ta sẽ làm như trên, nhưng giờ PHẢI biến đổi mới được -> chia 10 cứ tiếp tục đến khi còn số 0.
Vấn đề là cách viết số AI Cập là từ trái qua phải ứng với từ cao xuống thấp, nên phải đảo lại bằng cách nào đó.