C数据类型-中文为什么两个字节

ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值-128,最大值127。如一个ASCII码就是一个字节。

  

1,为什么英文一个字节,汉字两个字节?

     一个字节是8位,0-127,只能表示128个字符,用来表示英文26个字母足够了,但是用来表示汉字却差远了,汉字太多了,所以用两个字节,可以表述的最大汉字数量为2的16次方,这才够用(如下,汉字编码表)

两个字节16位,可以表示的字符有,65 536个

1990年出版的《辞海》有14872个汉字;
1716年编撰的《康熙字典》有47035个汉字;
1994年出版的《中华字海》有87019个汉字(其中重复字320个); 几乎够用吧)

另外,其他编码形式:

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节

Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。

2,位,字节,字 在硬件上的关系?

是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态(21);两个二进制位可以表示00、01、10、11四种(22)状态;

字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)

字:在计算机中作为一个整体被存取、传送、处理的二进制数字符串叫做一个字或单元,每个字中二进制位数的长度,称为字长。一个字由若干个字节组成,不同的计算机系统的字长是不同的,常见的有8位、16位、32位、64位等,字长越长,计算机一次处理的信息位就越多,精度就越高,字长是计算机性能的一个重要指标。目前主流微机都是32位和64位机。

3.,数据类型分类的 意义

a.由于计算机内存与计算能力的有限性,为了充分利用资源,尽可能占用较少的内存单元,所以有短整型数据,整型数据等,其数据精度不高,但是当数据精度要求不高情况下,适宜采用此种类型。

基本整型 【unsigned】int ,在c语言中,整型数据一般用机器的一个字长来存储,故其表示范围与其计算机系统的软硬件环境有关,比如32位机(比如v2013里面用win32编译),sizeof(int)=4,由于习惯问题,64位机上,int还是4个字节。

 32位编译器:

      char :1个字节
      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   4个字节
      long long:  8个字节
      unsigned long:  4个字节

  64位编译器:

      char :1个字节
      char*(即指针变量): 8个字节
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   8个字节
      long long:  8个字节
      unsigned long:  8个字节

4.为什么4GB内存的电脑需要32位的地址总线?

字节是数据处理的基本单位,每个字节都有一个地址。

地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为2^16=64KB,16位微型机的地址总线为20位,其可寻址空间为2^20=1MB。一般来说,若地址总线为n位,则可寻址空间为2^n位。

即32位地址总线,可以做到寻址4G个地址,即4GByte的运行内存。

猜你喜欢

转载自blog.csdn.net/bufengzj/article/details/81300321