2017-10-20 28 views
-1
int main() { 
    int x = 3613; 
    std::cout << "x= " << x << std::endl; 
    std::string xBin = std::bitset<16>(x).to_string(); 
    std::cout << xBin << std::endl; 
    unsigned long xDecimal = std::bitset<16>(xBin).to_ulong(); 
    std::cout << xDecimal << std::endl; 
    std::cout << std::endl << std::endl; 
    int b01 = 0b11001; 
    std::cout << "b01= " << b01 << std::endl; 
    int b02 = 0b1010; 
    std::cout << "b02= " << b02 << std::endl; 
    int b03 = b01 + b02; 
    std::cout << "int b03 = b01 + b02 = " << b03 << std::endl; 
    return 0; 
} 

Sortie:Comment composer et former les littéraux binaires, par exemple à travers la conversion de décimal en C++ 11/C++ 14?

x= 3613 
0000111000011101 
3613 

b01= 25 
b02= 10 
int b03 = b01 + b02 = 35 

littéraux binaires que nous pouvons faire des opérations arithmétiques normales, alors que les chaînes obtenues avec std :: bitset <> cela est impossible. Alors ... la question est: comment "composer" les littéraux binaires, par exemple à travers la conversion de décimal en binaire tel qu'obtenu en utilisant std :: bitset <>? Dans l'attente de votre aimable aide. Marco

+0

Que voulez-vous dire par "composer"? Voulez-vous dire faire la même chose que 'std :: bitset' et la sortie de chaîne, mais avec une autre fonction? Quel est le problème avec l'utilisation de 'std :: bitset'? – wally

+0

Quel est le problème avec 'to_ulong'? – user2357112

+0

Je suppose que je dois en savoir plus sur std :: bitset pour utiliser les opérations de bitset pour les opérations arithmétiques ordinaires – user2315094

Répondre

0

Vous ne devriez pas fonctionner sur bitsets en les convertissant en chaîne et à l'arrière - ce qui manque le point de bitsets ... Au lieu de cela vous opérez sur eux en utilisant des opérateurs binaires: &, |, ^, ... (juste comme vous le feriez sur les entiers habituels).

std::cout << std::bitset<3>(4) << " or " 
      << std::bitset<3>(2) << " = " 
      << (std::bitset<3>(4) | std::bitset<3>(2)) << std::endl; 

Prints: 100 or 010 = 110

Vous pouvez trouver tous les opérateurs sur le wiki: http://en.cppreference.com/w/cpp/utility/bitset

+0

Je suppose que je dois en savoir plus sur std :: bitset pour utiliser les opérations de bitset pour les opérations arithmétiques ordinaires – user2315094