мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?

Занятие 06.11.13

Рассмотрим следующую задачу:

Задача

Написать программу, позволяющую переводить целые положительные числа из десятеричной системы счисления в шестнадцатеричную и обратно.

Решение

Создадим класс Notations, методы которого будут осуществлять нужные нам преобразования. Методы в классе будут статическими.

package com.nsunc.wiki.penname;
 
public class Notations {
	static String from10to16(int n) {
		String s = "";
		int a = n;
		int r;
 
		do {
			r = a % 16;
			a = a / 16;
			if (r < 9)
				s = Integer.toString(r) + s;
			else
				s = String.valueOf((char) (((int) 'A') + r - 10)) + s;
		} while (a != 0);
 
		return s;
	}
 
	static int from16to10(String s) {
		int n = 0;
 
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) >= '0' && s.charAt(i) <= '9')
				n = n + ((int) s.charAt(i) - (int) '0')
						* (int) Math.pow(16, s.length() - 1 - i);
			else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'F')
				n = n + ((int) s.charAt(i) - (int) 'A' + 10)
						* (int) Math.pow(16, s.length() - 1 - i);
			else
				return -1;
		}
 
		return n;
	}
}

Задание

  1. Дописать в классе Notations методы from10to8 и from8to10, позволяющие переводить целые положительные числа из десятичной системы счисления в восьмеричную и обратно.
  2. Придумать и реализовать общие методы, позволяющие осуществлять прямой и обратный переводы целых чисел из десятичной системы счисления в систему счисления с произвольным основанием X таким, что <html>2&nbsp;&le;&nbsp;<i>X</i>&nbsp;&le;&nbsp;16</html>.

Список занятий