2015-01-05 9 views
1

내 질문에 대해 설명하기가 어렵습니다.C++에서 이진 비트 방식으로 값을 정의하는 방법은 무엇입니까?

BYTE data = 0XAB; 

내가이처럼 정의 할 방법 :

BYTE data = 0B10101011; 
16 진수 예를 들어 나는이 같은 값을 정의 할 수 있습니다

: 기본적으로 난 그냥 바이너리 방식으로 값을 정의 할

내가 아는 한 C 또는 C++은 0B을 지원하지 않습니다. 내가하는 일은 다른 의미로 다른 비트를 사용하는 것입니다. 값이 이것에 정의되어 있다면, 바로 그 값이 의미하는 것이 무엇인지 쉽게 알 수 있습니다. 0b 또는 0B 접두어

답변

3

C++14 allows binary literals :

BYTE data = 0B10101011; 

이 기능을 지원 ++

+0

이들은까지 다시 그 소리 2.9, GCC 4.9과 인텔의 C++ 컴파일러 V14로 지원됩니다. Visual Studio 2015는 바이너리 리터럴을 지원합니다. 출처 : [(1)] (http://www.italiancpp.org/wp-content/uploads/2014/03/CppISO-Feb2014-r1.pdf) [(2)] (http : //www.visualstudio. – bames53

1

C/C의 일부 최신 버전을 (언어 사양의 "2.14.2 정수 리터럴"아래 참조). 해당 기능을 사용할 수없는 경우 비트 세트를 대신 사용할 수 있습니다.

bitset<8> b(string("01010101")); 

비트 세트는 일부 변환 기능도 제공하므로 숫자를 얻는 데 사용할 수 있습니다.

+0

아니요. C 버전은 지원하지 않으며 (최신 C11조차도 지원하지 않음) C++의 한 가지 버전 (최신 C++ 14) 만 지원합니다. – MSalters

2

당신이 C++ (14)에 대한 지원이없는 경우, 당신이 할 수있는

BYTE data = std::bitset<8>("10101011").to_ulong(); // casted back to BYTE