Занятие 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; } }

Задание

Дописать в классе Notations методы from10to8 и from8to10, позволяющие переводить целые положительные числа из десятичной системы счисления в восьмеричную и обратно.

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

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