Dev*_*oot 13 c binary integer representation
可能重复:
我可以在C或C++中使用二进制文字吗?
我正在学习C,我最近发现我们可以用不同的方式表示整数,如:
(假设i"人类可读"的值为512.)以下是表示:
int i = 512; 
int i = 01000;
int i = 0x200;
有点像int i = 1000000000b?这很有趣,但遗憾的是没有C编译器接受该值.
zne*_*eak 30
该标准描述无法创建"二进制文字".但是,最新版本的GCC和Clang使用类似于十六进制语法的语法支持此功能,除了它b而不是x:
int foo = 0b00100101;
如上所述,使用这样的二进制文字将您锁定在Visual Studio的C和C++编译器之外,因此您可能需要注意在何处以及如何使用它们.
C++ 14(我知道,我知道,这不是C)标准化对二进制文字的支持.
jas*_*son 12
你不能用C做到这一点.
但是你说你正在学习C++.在C++中,您可以使用BOOST_BINARY直到C++ 0x,这将允许用户定义的文字.
但请注意,将十六进制转换为二进制和后退非常容易.
对于给定的二进制数,只需将数字分组为四组并了解它
0000 <-> 0  
0001 <-> 1  
0010 <-> 2   
0011 <-> 3
0100 <-> 4
0101 <-> 5
0110 <-> 6
0111 <-> 7
1000 <-> 8
1001 <-> 9
1010 <-> A
1011 <-> B
1100 <-> C
1101 <-> D
1110 <-> E
1111 <-> F
经过几次尝试在你脑海中进行这种翻译后,你会对它感到非常舒服.(当然,您可以使用八进制执行相同操作,但十六进制比八进制更紧凑.)
对于您的具体示例:
1000000000 -> 10 0000 0000 -> 0010 0000 0000 -> 0x200
在C(我相信C++)中,没有数字的二进制表示.但是,对于您显示的简单数字,您可以使用快捷方式
int i = 1 << 9; /* binary 1 followed by 9 binary 0's */
| 归档时间: | 
 | 
| 查看次数: | 57967 次 | 
| 最近记录: |