- 1GB=1024MB
- 1MB=1024KB
- 1KB=1024Byte (字节)
- 1Byte=8Bit
一个英文字母或者数字(半角字符)占用一个字节,而一个汉字(全角字符)则占用两个字节。 1KB = 1024字节,也就是相当于1024个半角字符,512个全角字符。
1位就是1个bit,一个字节就是1byte,就等于8位,也就是1byte=8bit
C++ int,float,double,long存储大小
1、整形:表示整数、字符和布尔值的算数类型的合称;
2、字符类型有两种:char和wchar_t,char类型通常是单个字节,wchar_t类型用于扩展字符集,比如汉字和日语,这些字符集不能用单个char表示;
3、short、int、long类型都表示整形,一般来说(32位机器),short占16位,两字节;int占32位(根据系统而定,32位机下为4个字节),四个字节;long在32位机器上和int一样,也是四个字节(所以感觉C++ Primer中这块的概念有误,1字=2字节 才对)
4、默认情况下,int、short、long都是带符号的,即signed;
5、和其他整形不同,char有三种表示方式:普通char、unsigned char、signed char。虽然有三种不同的类型,但是只有两种表示方式。可以使用unsigned char或者signed cahr表示char类型,具体使用哪种方式由编译器而定。
6、整型的赋值:当一个超出范围的值被赋给一个变量时,会怎么赋值呢?答曰:由编译器来决定,但一般都是取该值对该类型取值数目求模后的值(但不能保证所有编译器都会这样处理),e.g. 试图将336存储到8位的unsigned char中,实际赋值为80,因为80是336对256求模后的值,同理,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值;
7、浮点数float、double、long double分别表示单精度、双精度、扩展精度浮点数,一般float为32位,double为64位,long使用96位或者128位。类型的取值范围决定了浮点数所含的有效数字位数,对于实际程序来说,float类型只能保证6位的有效数字,而double类型至少可以保证10位的有效数字。
8、C++的标准并没有规定每种类型占多少位,只是说 “sizeof(long)>=sizeof(int)>=sizeof(short)”,所以具体的字节数都是根据编译器来确定的。
字节(Byte):通常将可表示常用英文字符8位二进制称为一字节。 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点2占一个字节,中文标点占两个字节.
半角英文无论大小写都点一个字节,全角英文和汉字占两个字节。
按字节判断,一个汉字是两个字节,而且每个字节都大于等于128,而普通的ASCII字符本身是一个字节,且都是小于128的。至于,判断出某个字节〉=128后,想知道是汉字的第一个字节,还是第二个字节,这单凭一个字节数是无法判断的,除非:从一个由正常字符和汉字组成的串的开头开始逐个字符/汉字进行分析
对于多字节字符串,只能从字符串开头开始逐个判断,每次取一个字节,如果大于等于0x80,则说明该字节与下一个字节是一个汉字,然后跳过下一字节继续判断后面的数据;如果是Unicode字符串,每个字符固定占两字节,英文、数字等字符是小于0x0080的。
汉字第一个字符的最高位一定是-1(独去汉字的第一个字节的ascci是一个负数)(不过这是不一定的,要看什么编码,不同编码特征不同)
普通字符(字母、数字。。。)最高位是0
汉字的第一个字符一定在第二个字符的前面15
0b是说明这段数字是二进制,0x表示是16进制。0x几乎所有的编译器都支持,而支持0b的并不多
八进制0o开头。十进制0d开头或者不用开头声明
存储大小(1KB,1MB)
最新推荐文章于 2021-07-24 22:20:13 发布