Exemplo n.º 1
0
void p3(void)
{
    unsigned int b=11491255;
    int a[5]={1,2,8,18,21};
    clearBits(a, 5, &b);
    printf("The result of clearing bits is %u\n", b);
}
Exemplo n.º 2
0
NFA CreateSingleNFA (wchar_t c)
{
    NFA  nfa;
    
    Edge e;

    nfa = malloc (sizeof (struct Automaton));
    assert(nfa); 
    
    /* 初始化nfa的Edge数组 */
    nfa->edgeArray = allocEdgeArray(1); 

    /* 初始化nfa的Status状态数组 */
    nfa->statusArray = allocStatusArray(2);
   
    e = Array_get(nfa->edgeArray, 0);
    clearBits(e);
    addCharacter (e, c);
    
    link_Two_Status_In_Automaton(nfa,0,1,0);

    adjustStatusID(nfa);
    ensureFinalStatus (nfa->end);

    return nfa ;
}
Exemplo n.º 3
0
unsigned int putByteNumber(int byteNo, unsigned char byteValue, 
                           unsigned int source)
{   int low = byteNo * 8;
    int high = low + 7;
    source = clearBits(low, high, source);
    unsigned int aByte = byteValue;
    aByte = aByte << low;
    return (source | aByte);
}
Exemplo n.º 4
0
unsigned int assignOneBit(int bitNumber, int bitValue, unsigned int source)
{   
    if(bitValue == 0)
    {
            return clearBits(bitNumber, bitValue, source);
    }

    else if(bitValue == 1)
        {
            return setBits(bitNumber, bitNumber, source);
        }
    else return 0;
}
/**
 * Eine Sekunde startet. Muss von einem externen
 * Zeitgeber, z. B. einer RTC, aufgerufen werden.
 *
 * Zurueckgegeben wird ein Wahrheitswert.
 * TRUE bedeutet, das Zeittelegramm wurde korrekt ausgewertet, die Zeitdaten
 * koennen mit den Gettern abgerufen werden.
 * FALSE bedeutet, die Auswertung laeuft oder war falsch, die Getter liefern
 * alte Informationen.
 */
boolean MyDCF77::newSecond() {
    boolean retVal = false;

    if (_highcount != 0) {
        // Daten
        _meanvalues[_meanpointer] = _highcount;
        _meanpointer++;
        if (_meanpointer > MYDCF77_MEANCOUNT) {
            _meanpointer = 0;
        }

        unsigned long average = 0;
        for (byte i = 0; i < MYDCF77_MEANCOUNT; i++) {
            average += _meanvalues[i];
        }
        average /= MYDCF77_MEANCOUNT;

        DEBUG_PRINT(F("average = "));
        DEBUG_PRINT(average);
        DEBUG_PRINT(F("; highcount = "));
        DEBUG_PRINT(_highcount);

        if (_highcount > average) {
            _bits[_bitsPointer] = 1;
            DEBUG_PRINTLN(F("; HIGH"));
        } else {
            _bits[_bitsPointer] = 0;
            DEBUG_PRINTLN(F("; LOW"));
        }
        _bitsPointer++;
        if (_bitsPointer > MYDCF77_TELEGRAMMLAENGE) {
            _bitsPointer = 0;
        }
    } else {
        // Pause
        DEBUG_PRINTLN(F("PAUSE"));
        retVal = decode();
        _bitsPointer = 0;
        clearBits();
    }

    _highcount = 0;

    return retVal;
}
/**
 * Initialisierung mit dem Pin, an dem das Signal des Empfaengers anliegt
 */
MyDCF77::MyDCF77(byte signalPin, byte statusLedPin) {
    _signalPin = signalPin;
#ifndef MYDCF77_SIGNAL_IS_ANALOG
    pinMode(_signalPin, INPUT);
#endif

    _statusLedPin = statusLedPin;
    pinMode(_statusLedPin, OUTPUT);
    digitalWrite(_statusLedPin, LOW);

    clearBits();

    for (byte i = 0; i < MYDCF77_MEANCOUNT; i++) {
        _meanvalues[i] = MYDCF77_MEANSTARTVALUE;
    }
    _meanpointer = 0;
    _highcount = 0;
}
Exemplo n.º 7
0
oop* oldSpace::object_start(oop* p) {
  // Find the page start
  oop* q = p;
  int b = (int) q;
  clearBits(b, nthMask(card_shift));
  q = (oop*) b;
  assert(contains(q), "q must be in this space");
  int index  = (q - bottom()) / card_size_in_oops;

  int offset = offset_array[index--];
  while(offset == card_size_in_oops) {
    q -= card_size_in_oops;
    offset = offset_array[index--];
  }
  q -= offset;
  oop* n = q;
  assert((*n)->is_mark(), "check for header");
  while (n <= p) {
    q = n;
    n += as_memOop(n)->size();
  }
  assert( as_memOop(q)->mark()->is_mark(), "Must be mark");
  return q;
}