Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > побитовая работа в java


Автор: barin_Student 20.4.2009, 08:17
Добрый день. Всех с прошедшей пасхой.
Вопщем у меня такая задача:
есть у меня массив байт скажем из трех элементов:
4 2 5
поле номер четыре это чек сумма, вычислается оно так (XOR):
(первое поле)
+(XOR)
(второе поле)
00001000
+
00000010
-------------
00001010
(сумма)+(третье поле)
00001010
+
00010000
-------------
00011010 - это будет чек сумма 
26(десятичная)
Как это реализовать в java ? smile 
Я конечно могу в лоб это реализовать , но в java есть метода работы с бИтами, что именно нужно как перевести байт в биты? как сделать сложение ХOR ? И как первести опять 8 бит в один байт ? и все средствами java& smile 

Автор: math64 20.4.2009, 08:44
5 = Двоичное 00000101, твоя симму будет  00001111 = 15
Код

void checkSum(byte[] array) {
   int sum = 0;
   for(int i = 0; i < array.length - 1; i++) {
      sum ^= array[i];
   }
   array[array.lenth-1] = (byte)sum;
}


Автор: barin_Student 20.4.2009, 08:49
{5 = Двоичное 00000101, твоя симму будет  00001111 = 15} smile  , а блин точно, что то я в понедельник в упадке ,счас посмтрю  smile

Добавлено через 9 минут и 30 секунд
Код

public static byte getCheckSumm(byte[] pbc){
        byte checkSumm=0;
        int sum = 0;
        for(int i = 0; i < pbc.length; i++) {
                  sum ^= pbc[i];
               }
    
        return (byte)sum;
    }

Код

  byte[] b ={(byte)4,(byte)2,(byte)5};
  System.out.println(p.getCheckSumm(b));

Выдает 3 :(

Автор: barin_Student 20.4.2009, 09:07
smile  - все верно чек сумма =3 , а не 15 smile  .. спс. smile

Добавлено через 1 минуту и 18 секунд
+1 к репутации math64 smile 

Автор: barin_Student 22.4.2009, 07:40
Может я и нарушаю правила форума , если так , то я могу создать новую тему, а это помечу решенной , но вопрос номер два у меня практически такойже как и первый в этой теме. 
Вопрос как работать в java с битами ? Мне нужно чтоб я мог для байта устанавливать биты как при работе с масивом.
Например что то около такого:
byte bitsVector={"10101111"};
вот что то вроде такого, или пример метода который это позволит сделать. smile 
Честное пионерское искал я в google на тему java и работа с битами. и ничаго не нашел,толкового.. smile 

Автор: powerOn 22.4.2009, 07:51
Цитата(barin_Student @  22.4.2009,  08:40 Найти цитируемый пост)
Может я и нарушаю правила форума , если так , то я могу создать новую тему, а это помечу решенной ,


Создайте новую тему.

Автор: barin_Student 22.4.2009, 07:52
Цитата(powerOn @ 22.4.2009,  10:51)
Цитата(barin_Student @  22.4.2009,  08:40 Найти цитируемый пост)
Может я и нарушаю правила форума , если так , то я могу создать новую тему, а это помечу решенной ,


Создайте новую тему.

Ок, эта закрыта. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)