• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с задачей о байтах

  • Автор темы Автор темы Inn
  • Дата начала Дата начала

Inn

Ученик
Регистрация
4 Мар 2012
Сообщения
9
Реакции
0
Баллы
0
Помогите с задачей о байтах

Задали вот такую задачку с байтами:
"Поменять местами пятый и шестой биты байта.Подсчитать и вывести в терминал, сколько цифровых символов между соседними пробелами."
Первую часть сделала задания,оказалось не сильно сложно:
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
public class Main{
public static void main(String[ ] args) throws IOException{
byte b=0;byte b0,b1,b2,b3;int d=0;
FileInputStream fi=null;
FileOutputStream fo=null;
try{
fi=new FileInputStream("f-out.byt");
fo=new FileOutputStream("f-out2.byt");
while((d=fi.read())!=-1){b=(byte)d;
//преобразование b согласно варианту
//Поменять местами пятый и шестой биты байта
b1=(byte)(b&0x10);//выделяю 2 бит b1=(byte)(b&0x04);
b2=(byte)(b1«1); //смещаю в третий b2=(byte)(b1»1);
b3=(byte)(b&0x20); //выделяю 3 бит b3=(byte)(b&0x02);
b4=(byte)(b3»1);//смещаю во 2 бит b4=(byte)(b3«1);
b5=(byte)(b2 | b4);
b6=(byte)(b & 0xcf); // b6=(byte)(b & 0xf9);
b=(byte)(b6|b5);
fo.write(b);
}
} catch (IOException e){System.out.println("error");}
finally{if(fo!=null){
System.out.println(" fo was opened");
fo.close();

------------------
А вот как сделать вторую вообще не имею понятия...С байтами я новичок,что делать вообще не знаю..Зашла в тупик.Задача на Java
 
Назад
Сверху