Yan*_*ier 31
这触及了许多主题,包括字节的历史意义,字符的C定义和数学.
对于初学者来说,一个字节在历史上已经有很多东西,但是现在我们几乎总是指八位字节,即8位.作为单词的游戏,还有nybble(或经常是半字节),这是半个字节(不称为咬).
数学告诉我们,通过8个1-or-0值的有序组合,我们得到组合.有时我们使用这个无符号的,有时是签名的,但无论哪种方式,我们希望在范围内有0; 所以无符号范围是.对于签名范围,我们有更多选项,其中两个补充是最受欢迎的; 在这种情况下,我们得到的一个负值比正值多一个.28 = 2560..255-128..+127
C++从C继承char,其中a被定义为sizeof1,是最小的可寻址大小(即具有与&的不同地址值),以及最小范围-128..127或0..255取决于它是否已签名.归结为需要至少 8位或一个字节; 如果机器支持它,则只需一个字节.
0xff写入255的另一种0x方式是标记十六进制常量的C方式,因此其中的每个数字是4位(对于16个可能的数字),然后是半字节.这转换为无符号八位字节,所有位都设置为1.
如果特定大小对您的代码很重要,那么有一个标题stdint.h定义了最小和精确大小的类型,用于速度或大小优化.
顺便提一下,ASCII是一个7位字符集.现在,具有7位字节的机器是不寻常的,并且像ISO 8859-1和UTF-8这样的更宽的字符集很受欢迎.
0xFF 可以存储为8位,即一个字节.
sizeof(char)定义为始终返回1,而不管基础数据类型的实际位大小(参见当前标准的5.3.3.1).所有其他数据表的大小是相对于a的大小计算的char.