亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? int96.cpp

?? 一個很棒的大數(shù)運算類
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
  }
  if (B.IsNegative())
  {
    bBNegative = TRUE;
    B.Negate();
  }

  CInt96 rVal;
  CInt96 b1 = ((unsigned __int64)B.m_LSB) * ((unsigned __int64)A.m_LSB);
  CInt96 b2 = ((unsigned __int64)B.m_CSB) * ((unsigned __int64)A.m_LSB);
  CInt96 b3 = ((unsigned __int64)B.m_MSB) * ((unsigned __int64)A.m_LSB);
  CInt96 b4 = ((unsigned __int64)B.m_LSB) * ((unsigned __int64)A.m_CSB);
  CInt96 b5 = ((unsigned __int64)B.m_CSB) * ((unsigned __int64)A.m_CSB);
  CInt96 b6 = ((unsigned __int64)B.m_LSB) * ((unsigned __int64)A.m_MSB);

  rVal += b1;
  rVal += b2 << 32;
  rVal += b3 << 64;
  rVal += b4 << 32;
  rVal += b5 << 64;
  rVal += b6 << 64;

  if ((bANegative && !bBNegative) || (!bANegative && bBNegative))
    rVal.Negate();
  return rVal;
}

BOOL CInt96::GetBit(int nIndex) const
{
  ASSERT(nIndex >= 0 && nIndex < 96);

  BOOL rVal;
  DWORD dwBitMask = 0x80000000 >> (nIndex % 32);
  if (nIndex < 32)
    rVal = ((m_MSB & dwBitMask) != 0);
  else if (nIndex < 64)
    rVal = ((m_CSB & dwBitMask) != 0);
  else
    rVal = ((m_LSB & dwBitMask) != 0);

  return rVal;
}

void CInt96::SetBit(int nIndex, BOOL value)
{
  ASSERT(nIndex >= 0 && nIndex < 96);

  DWORD dwBitMask = 0x80000000 >> (nIndex % 32);
  if (!value)
    dwBitMask = ~dwBitMask;
  if (nIndex < 32)
  {
    if (value)
      m_MSB = m_MSB | dwBitMask;
    else
      m_MSB = m_MSB & dwBitMask;
  }
  else if (nIndex < 64)
  {
    if (value)
      m_CSB = m_CSB | dwBitMask;
    else
      m_CSB = m_CSB & dwBitMask;
  }
  else
  {
    if (value)
      m_LSB = m_LSB | dwBitMask;
    else
      m_LSB = m_LSB & dwBitMask;
  }
}

CInt96 CInt96::operator^(const CInt96& value) const
{
  CInt96 rVal;
  rVal.m_LSB = m_LSB ^ value.m_LSB;
  rVal.m_CSB = m_CSB ^ value.m_CSB;
  rVal.m_MSB = m_MSB ^ value.m_MSB;
  return rVal;
}

CInt96 CInt96::operator|(const CInt96& value) const
{
  CInt96 rVal;
  rVal.m_LSB = m_LSB | value.m_LSB;
  rVal.m_CSB = m_CSB | value.m_CSB;
  rVal.m_MSB = m_MSB | value.m_MSB;
  return rVal;
}

CInt96 CInt96::operator&(const CInt96& value) const
{
  CInt96 rVal;
  rVal.m_LSB = m_LSB & value.m_LSB;
  rVal.m_CSB = m_CSB & value.m_CSB;
  rVal.m_MSB = m_MSB & value.m_MSB;
  return rVal;
}

CInt96& CInt96::operator^=(const CInt96& value)
{
  m_LSB ^= value.m_LSB;
  m_CSB ^= value.m_CSB;
  m_MSB ^= value.m_MSB;
  return *this;
}

CInt96& CInt96::operator|=(const CInt96& value)
{
  m_LSB |= value.m_LSB;
  m_CSB |= value.m_CSB;
  m_MSB |= value.m_MSB;
  return *this;
}

CInt96& CInt96::operator&=(const CInt96& value)
{
  m_LSB &= value.m_LSB;
  m_CSB &= value.m_CSB;
  m_MSB &= value.m_MSB;
  return *this;
}

CInt96& CInt96::operator%=(const CInt96& value)
{
  *this = *this % value;
  return *this;
}

CInt96 CInt96::operator%(const CInt96& value) const
{
  CInt96 Remainder;
  CInt96 Quotient;
  Modulus(value, Quotient, Remainder);
  return Remainder;
}
 
CInt96 CInt96::operator/(const CInt96& value) const
{
  CInt96 Remainder;
  CInt96 Quotient;
  Modulus(value, Quotient, Remainder);
  return Quotient;
}

void CInt96::Modulus(const CInt96& divisor, CInt96& Quotient, CInt96& Remainder) const
{
  //Correctly handle negative values
  CInt96 tempDividend(*this);
  CInt96 tempDivisor(divisor);
  BOOL bDividendNegative = FALSE;
  BOOL bDivisorNegative = FALSE;
  if (tempDividend.IsNegative())
  {
    bDividendNegative = TRUE;
    tempDividend.Negate();
  }
  if (tempDivisor.IsNegative())
  {
    bDivisorNegative = TRUE;
    tempDivisor.Negate();
  }

  //Handle the special case's
  if (tempDivisor.IsZero())
  {
    //force a Divide by Zero exception
    _asm
    {
      mov EAX, 0
      div EAX
    }
  }
  else if (tempDividend.IsZero())
  {
    Quotient = CInt96(0);
    Remainder = CInt96(0);
  }
  else
  {
    Remainder.Zero();
    for (int i=0; i<96; i++)
    {
      Remainder += tempDividend.GetBit(i);
      BOOL bBit = (Remainder >= tempDivisor);
      Quotient.SetBit(i, bBit);
      if (bBit)
        Remainder -= tempDivisor;
    
      if ((i!=95) && !Remainder.IsZero())
        Remainder <<= 1;
    }
  }

  if ((bDividendNegative && !bDivisorNegative) || (!bDividendNegative && bDivisorNegative))
  {
    //Ensure the following formula applies for negative dividends
    //dividend = divisor * Quotient + Remainder
    Quotient.Negate();
  }
}

CInt96::operator int()
{
  if (IsNegative())
  {
    CInt96 t(*this);
    t.Negate();
    return -t;
  }
  else
  {
    ASSERT(m_CSB == 0 && m_MSB == 0 && ((m_LSB & 0x80000000) == 0));
    return (int) m_LSB;
  }
}

CInt96::operator unsigned int()
{
  ASSERT(m_CSB == 0 && m_MSB == 0);
  ASSERT(!IsNegative());
  return m_LSB;
}

CInt96::operator __int64()
{
  if (IsNegative())
  {
    CInt96 t(*this);
    t.Negate();
    return -t;
  }
  else
  {
    ASSERT(m_MSB == 0 && ((m_CSB & 0x80000000) == 0));
    return (((__int64) m_CSB) << 32) + m_LSB;
  }
}

CInt96::operator unsigned __int64()
{
  ASSERT(m_MSB == 0);
  ASSERT(!IsNegative());
  return (((unsigned __int64) m_CSB) << 32) + m_LSB;
}

CString CInt96::FormatAsHex(BOOL bLeadingZeros) const
{
  CString rVal;

  CString sTemp;

  if (bLeadingZeros)
  {
    sTemp.Format(_T("%08x"), m_MSB);
    rVal += sTemp;
  }
  else
  {
    if (m_MSB)
    {
      sTemp.Format(_T("%x"), m_MSB);
      rVal += sTemp;
    }
  }

  if (bLeadingZeros)
  {
    sTemp.Format(_T("%08x"), m_CSB);
    rVal += sTemp;
  }
  else
  {
    if (m_CSB)
    {
      if (m_MSB)
        sTemp.Format(_T("%08x"), m_CSB);
      else
        sTemp.Format(_T("%x"), m_CSB);        
      rVal += sTemp;
    }
  }

  if (bLeadingZeros)
  {
    sTemp.Format(_T("%08x"), m_LSB);
    rVal += sTemp;
  }
  else
  {
    if (m_LSB)
    {
      if (m_MSB || m_CSB)
        sTemp.Format(_T("%08x"), m_LSB);
      else
        sTemp.Format(_T("%x"), m_LSB);
      rVal += sTemp;
    }
  }

  if (rVal.IsEmpty())
    rVal = _T("0");

  return rVal;
}

CString CInt96::FormatAsBinary(BOOL bLeadingZeros) const
{
  CString rVal;

  BOOL bInLeadingZeros = TRUE;
  LPTSTR pszBuffer = rVal.GetBuffer(97);
  int nCurOffset = 0;
  for (int i=0; i<96; i++)
  {
    if (GetBit(i))
    {
      pszBuffer[nCurOffset] = _T('1');
      bInLeadingZeros = FALSE;
      nCurOffset++;
    }
    else
    {
      if (bLeadingZeros || (!bLeadingZeros && !bInLeadingZeros))
      {
        pszBuffer[nCurOffset] = _T('0');
        nCurOffset++;
      }
    }
  }
  if (nCurOffset == 0)
  {
    pszBuffer[nCurOffset] = _T('0');
    nCurOffset++;
  }
  pszBuffer[nCurOffset] = _T('\0');
  rVal.ReleaseBuffer();

  return rVal;
}

CString CInt96::FormatAsDecimal() const
{
  CString rVal;
  LPTSTR pszBuffer = rVal.GetBuffer(97);

  CInt96 t(*this);
  BOOL bNegative = t.IsNegative();
  if (bNegative)
    t.Negate();

  int i = 0;
  while (t >= CInt96(10))
  {
    CInt96 remainder = t % CInt96(10);
    pszBuffer[i] = (TCHAR) (remainder.m_LSB + _T('0'));

    //Get ready for the next loop
    t /= 10;
    ++i;
  }

  pszBuffer[i] = (TCHAR) (t.m_LSB + _T('0'));
  pszBuffer[i+1] = _T('\0');
  rVal.ReleaseBuffer();
  rVal.MakeReverse();

  if (bNegative)
    rVal = _T("-") + rVal;

  return rVal;
}

BOOL CInt96::ConvertFromBinaryString(const CString& sText)
{
  //Remove any leading or trailing spaces
  CString sTemp(sText);
  sTemp.TrimLeft();
  sTemp.TrimRight();

  //Is the string too long?
  int nLength = sTemp.GetLength();
  if (nLength > 96)
  {
    TRACE(_T("Binary string was too long for conversion\n"));
    return FALSE;
  }

  //Iterate through each digit
  CInt96 t;
  for (int i=nLength-1; i>=0; i--)
  {
    TCHAR c = sTemp.GetAt(i);

    if (c == _T('1'))
      t.SetBit(95 - (nLength - 1 - i), TRUE);
    else if (c != _T('0'))
    {
      TRACE(_T("Binary string did not exclusively contain 1's or 0's\n"));
      return FALSE;
    }
  }

  *this = t;
  return TRUE;
}

BOOL CInt96::ConvertFromHexString(const CString& sText)
{
  //Remove any leading or trailing spaces
  CString sTemp(sText);
  sTemp.TrimLeft();
  sTemp.TrimRight();

  //Is the string too long?
  int nLength = sTemp.GetLength();
  if (nLength > 24)
  {
    TRACE(_T("Hex string was too long for conversion\n"));
    return FALSE;
  }

  //Iterate through each digit
  CInt96 t;
  for (int i=0; i<nLength; i++)
  {
    TCHAR c = sTemp.GetAt(i);

    if (c >= _T('0') && c <= _T('9'))
      t += CInt96(c - _T('0'));
    else if (c >= _T('A') && c <= _T('F'))
      t += CInt96(c - _T('A') + 10);
    else if (c >= _T('a') && c <= _T('f'))
      t += CInt96(c - _T('a') + 10);
    else
    {
      TRACE(_T("Hex string did not exclusively contain hex digits\n"));
      return FALSE;
    }

    if (i<(nLength-1))
      t <<= 4;
  }

  *this = t;
  return TRUE;
}

BOOL CInt96::ConvertFromDecimalString(const CString& sText)
{
  //Remove any leading or trailing spaces
  CString sTemp(sText);
  sTemp.TrimLeft();
  sTemp.TrimRight();

  //Handle a negative decimal value
  int nLength = sTemp.GetLength();
  BOOL bNegative = FALSE;
  if (nLength && sTemp.GetAt(0) == _T('-'))
  {
    bNegative = TRUE;
    sTemp = sTemp.Right(nLength - 1);
    sTemp.TrimLeft();
    nLength = sTemp.GetLength();
  }

  //Is the string too long?
  if (nLength > 29)
  {
    TRACE(_T("Decimal string was too long for conversion\n"));
    return FALSE;
  }

  //Iterate through each digit
  CInt96 t;
  for (int i=0; i<nLength; i++)
  {
    TCHAR c = sTemp.GetAt(i);

    if (c >= _T('0') && c <= _T('9'))
      t += CInt96(c - _T('0'));
    else
    {
      TRACE(_T("decimal string did not exclusively contain digits between 0 and 9\n"));
      return FALSE;
    }

    if (i<(nLength-1))
      t *= 10;
  }

  if (bNegative)
    t.Negate();

  *this = t;
  return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合色成人| 欧美精品九九99久久| 欧美日韩一级二级三级| 国产日韩欧美综合在线| 性欧美疯狂xxxxbbbb| 91香蕉视频mp4| 国产欧美精品在线观看| 六月婷婷色综合| 91黄色激情网站| 国产精品美女久久福利网站| 激情六月婷婷综合| 91.xcao| 亚洲精品国久久99热| 成人自拍视频在线| 久久久夜色精品亚洲| 久久精品国产久精国产爱| 精品视频在线看| 一区二区三区免费网站| 91麻豆高清视频| 国产精品嫩草影院com| 国产成人精品1024| 久久你懂得1024| 国产精品18久久久久久久久| 日韩美女视频一区二区在线观看| 亚洲午夜久久久久久久久电影院| 色老综合老女人久久久| 亚洲视频网在线直播| 成人免费看片app下载| 欧美极品aⅴ影院| 成人三级在线视频| 中文字幕中文字幕在线一区| 成人aaaa免费全部观看| 中文字幕一区二区三区蜜月 | 色噜噜狠狠成人网p站| 中文字幕亚洲成人| 99久久99久久精品免费看蜜桃| 欧美国产精品一区二区| 92国产精品观看| 亚洲另类在线制服丝袜| 欧美四级电影在线观看| 日韩精品乱码av一区二区| 欧美精品 国产精品| 日本美女一区二区三区视频| 69久久99精品久久久久婷婷| 美女视频黄免费的久久| 久久夜色精品国产噜噜av | 色综合天天综合色综合av| 亚洲视频你懂的| 欧洲精品一区二区| 青娱乐精品视频| 久久久亚洲高清| 91丝袜国产在线播放| 亚洲图片欧美色图| 日韩欧美中文字幕一区| 国产精品一区二区在线观看不卡 | 三级欧美韩日大片在线看| 日韩一区二区电影| 国产精品香蕉一区二区三区| 亚洲欧美日韩系列| 日韩一级高清毛片| 成人av在线资源| 青青青爽久久午夜综合久久午夜| 日韩一区二区精品葵司在线| 成人黄色一级视频| 亚洲成人av在线电影| 国产日韩欧美精品在线| 欧美自拍丝袜亚洲| 国产精品白丝av| 香蕉久久一区二区不卡无毒影院| 久久久亚洲综合| 678五月天丁香亚洲综合网| 国产成人午夜片在线观看高清观看| 亚洲欧美一区二区三区孕妇| 欧美xxx久久| 91国偷自产一区二区三区成为亚洲经典 | 51午夜精品国产| 成人在线一区二区三区| 香港成人在线视频| 国产精品免费av| 欧美成人官网二区| 91国产成人在线| 国产精品综合二区| 石原莉奈在线亚洲二区| 成人免费视频在线观看| 久久亚洲精品国产精品紫薇| 欧美三级电影精品| 91丨九色丨国产丨porny| 国精产品一区一区三区mba视频| 性久久久久久久久久久久| 亚洲另类一区二区| 美女脱光内衣内裤视频久久网站 | 91天堂素人约啪| 国产呦精品一区二区三区网站| 午夜亚洲国产au精品一区二区| 中文字幕中文字幕中文字幕亚洲无线| 日韩欧美国产成人一区二区| 欧美网站大全在线观看| 色婷婷av一区二区三区之一色屋| 国产精品一区二区x88av| 天天做天天摸天天爽国产一区 | 国产酒店精品激情| 久久精品国产在热久久| 亚洲成人福利片| 亚洲综合在线视频| 亚洲情趣在线观看| 亚洲男人的天堂av| 亚洲免费电影在线| 亚洲精选视频在线| 亚洲激情在线播放| 亚洲精品伦理在线| 依依成人精品视频| 亚洲五月六月丁香激情| 亚洲一区二区三区四区在线免费观看| 一区二区三区资源| 亚洲综合色婷婷| 日本在线播放一区二区三区| 日韩黄色一级片| 免费人成在线不卡| 国产一区视频网站| 国产成人免费在线观看不卡| 成人精品视频一区二区三区尤物| 成人激情免费网站| 91欧美一区二区| 欧美性大战xxxxx久久久| 欧美剧在线免费观看网站| 7799精品视频| 精品三级在线看| 国产欧美一区二区精品性色超碰 | 日产精品久久久久久久性色| 日韩精品免费视频人成| 国产中文字幕一区| 不卡在线视频中文字幕| 欧洲精品一区二区| 日韩一区二区不卡| 国产女主播在线一区二区| 亚洲欧美视频在线观看视频| 亚洲高清免费观看| 激情亚洲综合在线| 91美女福利视频| 欧美一区二区福利在线| 国产精品热久久久久夜色精品三区| 国产精品素人视频| 午夜精品视频在线观看| 国产精品一区不卡| 在线观看www91| 久久久九九九九| 亚洲美女视频一区| 久久精品国产一区二区三| 成人av集中营| 欧美一级日韩不卡播放免费| 国产精品福利影院| 日韩精品高清不卡| 93久久精品日日躁夜夜躁欧美| 制服.丝袜.亚洲.另类.中文| 亚洲国产精品av| 美国三级日本三级久久99| 99视频在线观看一区三区| 555夜色666亚洲国产免| 中文字幕在线视频一区| 麻豆成人久久精品二区三区红| 99热99精品| 精品久久久久久久久久久久包黑料| 综合激情成人伊人| 国产麻豆9l精品三级站| 欧美日韩色一区| 国产精品久久久久久久第一福利| 美女视频一区二区三区| 欧美综合一区二区| 国产精品国产三级国产aⅴ原创| 蜜桃视频免费观看一区| 91福利在线看| 国产精品久久久久久久久晋中 | 国产成人精品一区二| 欧美精品一二三四| 亚洲欧美精品午睡沙发| 国产91精品免费| 欧美成va人片在线观看| 五月婷婷综合网| 欧美主播一区二区三区| 日本一区二区成人在线| 国产一区二区三区综合| 精品三级在线观看| 秋霞成人午夜伦在线观看| 欧美视频一区在线| 亚洲综合区在线| 欧美自拍偷拍午夜视频| 一区二区三区欧美视频| 91在线播放网址| 中文字幕日韩av资源站| 成人免费高清在线观看| 国产喷白浆一区二区三区| 紧缚奴在线一区二区三区| 日韩午夜在线观看| 蜜臀精品久久久久久蜜臀| 91精品欧美久久久久久动漫| 天天射综合影视| 69堂国产成人免费视频| 男女男精品视频| 精品少妇一区二区三区在线视频| 九色porny丨国产精品|