1) Решение по простому. Шестнадцатиричная система это 4 бита на один знак. У нас двоичная запись 10001101. Всего 8 бит. Значит младшие 4 бита это младшее шестнадцатиричное число, а старшие 4 бита это старшее число. Смотрим на первые 4 бита 1101 это 1*+0*+1*+1*=1*1+0*2+1*4+1*8=1+4+8=13(в десятичной)=D (A-10, B-11, C-12, D-13 в 16-ричной).
Смотрим на старшую четверку битов 1000=0*+0*+0*+1*=0+0+0+8=8.
Пишем старшую цифре потом младшую 8D.
2)Теперь решение как нужно делать правильно (для любого основания). 10001101=1*+0*+1*+1*+0*+0*+0*+1*=1*1+0*2+1*4+1*8+0*16+0*32+0*64+1*128=1+4+8+128=141 (это перевели в десятичную). Затем переводим в нужную нам 16-ричную (это основание 16 значит будем делить на 16). 141/16= 8,8125. Мы получили целую часть от деления - цифра 8. Она у нас будет старшей (если при первом делении получилось число больше основания т.е.16 нужно его еще разделить). Умножим 8 на основание и вычтим это число из первоначального. 141-8*16=141-128=13. Мы получили младший разряд. Переводим 13 в 16-ричную (как показал ранее А-10 и т.д.). Получили ответ 8D
8D
Объяснение:
1) Решение по простому. Шестнадцатиричная система это 4 бита на один знак. У нас двоичная запись 10001101. Всего 8 бит. Значит младшие 4 бита это младшее шестнадцатиричное число, а старшие 4 бита это старшее число. Смотрим на первые 4 бита 1101 это 1*+0*+1*+1*=1*1+0*2+1*4+1*8=1+4+8=13(в десятичной)=D (A-10, B-11, C-12, D-13 в 16-ричной).
Смотрим на старшую четверку битов 1000=0*+0*+0*+1*=0+0+0+8=8.
Пишем старшую цифре потом младшую 8D.
2)Теперь решение как нужно делать правильно (для любого основания). 10001101=1*+0*+1*+1*+0*+0*+0*+1*=1*1+0*2+1*4+1*8+0*16+0*32+0*64+1*128=1+4+8+128=141 (это перевели в десятичную). Затем переводим в нужную нам 16-ричную (это основание 16 значит будем делить на 16). 141/16= 8,8125. Мы получили целую часть от деления - цифра 8. Она у нас будет старшей (если при первом делении получилось число больше основания т.е.16 нужно его еще разделить). Умножим 8 на основание и вычтим это число из первоначального. 141-8*16=141-128=13. Мы получили младший разряд. Переводим 13 в 16-ричную (как показал ранее А-10 и т.д.). Получили ответ 8D
class SearchPalin{
public static void main(String args[]){
String palinString = new java.util.Scanner(System.in).nextLine();
System.out.print("\nПалиндром(-ы):\n ");
for(int wordStart = 0, wordEnd = 0; wordEnd<palinString.length(); wordEnd++)
if(wordEnd+1==palinString.length() || palinString.charAt(wordEnd+1)==' '){
String wordBeginning = "", wordEnding = "";
for(int wordBe = wordStart;wordBe<wordEnd+1;wordBe++)wordBeginning+=palinString.charAt(wordBe);
for(int wordEn = wordEnd;wordStart-1<wordEn;wordEn--)wordEnding+=palinString.charAt(wordEn);
if(wordBeginning.equals(wordEnding)){
for(int palinWord = wordStart;palinWord<=wordEnd;palinWord++)System.out.print(palinString.charAt(palinWord));
System.out.print("\n ");
} wordStart = wordEnd+2;
}
}
}