1. Java / Говнокод #5154

    +145

    1. 1
    bit = bit == 0 ? 0 : 1;

    бит или не бит?

    Запостил: Lure Of Chaos, 05 Января 2011

    Комментарии (32) RSS

    • Синтетика. Не верю.
      Если бы тут был контекст, может быть поверил бы...
      Ответить
      • и зря

        http://archive.devx.com/java/free/articles/gt052002/gt052002-1.asp
        import java.io.EOFException;
        import java.io.IOException;
        import java.io.InputStream;
        
        public class BitInputStream {
          private InputStream in;
          private int buffer;
          private int nextBit = 8;
        
          public BitInputStream(final InputStream in) {
            this.in = in;
          }
        
          public void close() throws IOException {
            this.in.close();
            this.in = null;
          }
        
          synchronized public int readBit() throws IOException {
            if (this.in == null) {
              throw new IOException("Already closed");
            }
            if (this.nextBit == 8) {
              this.buffer = this.in.read();
              if (this.buffer == -1) {
                throw new EOFException();
              }
              this.nextBit = 0;
            }
            int bit = this.buffer & (1 << this.nextBit);
            this.nextBit++;
            bit = bit == 0 ? 0 : 1;
            return bit;
          }
        }
        Ответить
        • чего ж вы не вылаживаете главного то
          Ответить
        • к слову. а ты не в курсе для чего это народу вообще нужно?

          я вот тут вспомнил что даже на С подобный код будет подтормаживать. я в универские года баловался кодированием/компрессией данных - и пару реализаций сам делал. хвастатся было особо нечем, подтормаживало заметно по сравнению с извращенным кодом (обложеный макросами и инлайнами с ног до головы) который народ в профессиональных компрессорах использует.

          ну дак это на С. а на жабе подобный код... ну почти как попытка писать в жабе на асме.
          Ответить
      • там же
        import java.io.IOException;
        import java.io.OutputStream;
        
        public class BitOutputStream {
          private OutputStream out;
          private int buffer;
          private int bitCount;
        
          public BitOutputStream(final OutputStream out) {
            this.out = out;
          }
        
          public void close() throws IOException {
            this.flush();
            this.out.close();
            this.out = null;
          }
        
          private void flush() throws IOException {
            if (this.bitCount > 0) {
              this.out.write((byte) this.buffer);
              this.bitCount = 0;
              this.buffer = 0;
            }
          }
        
          synchronized public void writeBit(final int bit) throws IOException {
            if (this.out == null) {
              throw new IOException("Already closed");
            }
            if ((bit != 0) && (bit != 1)) {
              throw new IOException(bit + " is not a bit");
            }
            this.buffer |= bit << this.bitCount;
            this.bitCount++;
            if (this.bitCount == 8) {
              this.flush();
            }
          }
        }


        вот мне нравится if ((bit != 0) && (bit != 1))
        Ответить
        • буду КЭПом
          тип переменной то int, так что написать могут что угодно в нее
          Ответить
    • >бит или не бит?
      Автора однозначно надо БИТь
      Ответить
    • Ваша карта бита, сударь!
      Ответить
    • Ваши биты биты.
      Ответить
      • Биты биты биты.
        (испорчены данные, описывающие бейсбольную биту).
        Ответить

    Добавить комментарий