мета-данные страницы
Занятие 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 ≤ <i>X</i> ≤ 16</html>.