精华内容
下载资源
问答
  • #include<stdio.h> #include<string.h> int main() { char arr1[] = "abc";... char arr2[] = { 'a', 'b', 'c'};... printf("%d\n", strlen(arr...//strlen - 计算字符串长度的 printf("%d\n", strlen(arr2...
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char arr1[] = "abc";
    	char arr2[] = { 'a', 'b', 'c'};
    	printf("%d\n", strlen(arr1));//strlen -  计算字符串长度的
    	printf("%d\n", strlen(arr2));//随机值
    	printf("%s\n", arr1);	
        printf("%s\n", arr2);
    
    	return 0;
        }
    }
    

     

    展开全文
  • 字符与字符串计算机组成原理9)

    千次阅读 2020-10-04 11:56:40
    - 英文ASCII码与中文GB 2312-80 - 字符串存储方式

    字符与字符串

    视频链接地址:
    https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502
    

    前言

    在本篇中,你将掌握

    • 英文ASCII码与中文GB 2312-80
    • 字符串的存储方式

    在这里插入图片描述

    1 英文字符

    在这里插入图片描述
    英文在计算机里的表示方法就是ASCII码,键盘上的字母+数字+符号共128个字符只需要7个二进制(128个字符)编码即可。但为了存入计算机,通常在最高位补0,凑足1B(1Byte = 8 bit)。

    上表即为ASCII码表,0-127,在表中可以发现:
    可印刷字符:32~126,其余为控制、通信字符。

    1. 可印刷字符就是我们平时能打出来的字符;
    2. 控制字符如127DEL,Delete删除字符,控制计算机执行某一种行为;
    3. 通信字符,如6ACK,当两台计算机进行网络通信的时候,其中一台计算机收到另一台计算机发来的报文,需要回复一条ACK讯号。
    可印刷字符 起始 终止
    数字 48(0011 0000 57 (0011 1001
    大写字母 65(010 00001 90(010 11010
    小写字母 97(011 00001 122(011 11010

    对于可印刷字符,值得注意的是:
      在数字中,二进制编码的前四位均为0011,后四位为0000-1001的与之对应的8421编码;
      在大写字母中,前三位均为010,后五位为00001-11010的 1-26 的二进制码;
      在小写字母中,前三位均为011,后五位为00001-11010的 1-26 的二进制码。
    且所有的数字、大写字母、小写字母的ASCII码值都是连续的
      

    对于上述规律会有这样的问题
    例:已知’A‘的ASCII码值为65,字符’H‘存放在某存储单元M中,求M中存放的内容。

      答:该问题其实就是根据A的ASCII码推出H的ASCII码(二进制形式),A是第1个字母,H是第8个字母,因此H的码值 = 65 + 7 = 72,72再翻译成二进制就是100 1000,故M中存放的内容为0100 1000。第二种解法便是利用上述的大写字母规律,前三位均为010,后五位为00001-11010的二进制码。

    2 汉字

    对于英文字符和一些所需的符号,128个字符就足够英文的使用了,所以在计算机里保存英文只需要8bit(其实7bit就可以)。但对于中文来说,若算上生僻字等快7万多个字符。若要保存几万个字符,8bit显然是不够的,8bit最多只能对应256个字符。
    在这里插入图片描述
    因此,在1980年,我国推出了一个汉字编码标准
    GB231280+7445GB 2312-80:汉字+各种符号共7445个

    为存储更多的字符,因此在最开始,使用了区位码的方式进行存储,即94行94列的区位表示,但用这种0-93 * 0-93的方法存储会与英文ASCII码中的控制、通信字符有冲突,因此+32(20H),即32-125 * 32-125的国标码;但为了避免和英文的ASCII码冲突,还需要在国标码基础上加上128(80H) ,从而得到汉字内码(汉字机内码)。一个汉字占两个字节,但汉字的任何一个字节都是大于128的。所以当计算机读入一个字节的数据是大于128的,就说明将读入的是由两个字节组成的汉字

    输入:输入编码(如拼音,输入法)
    输出:汉字字形码

    输入编码会先变成国标码,再变成汉字内码;输出的汉字字形码就是用二进制表示的“手写数字识别版”的用1表示显示用0表示不显示的二进制数组(图片)。

    3 字符串

    在这里插入图片描述
    对于英文字符的存储,如上图,依次存储对应字母的ASCII编码,且在结尾处加\0,即00H

    在这里插入图片描述
    对于中文字符的存储,如上图,因为存储中文字符需要两个字节,因此也就有了两种存储模式:
      大端模式:将数据的最高有效字节存放在低地址单元中
      小端模式:将数据的最高有效字节存放在高地址单元中

    4 小结

    在这里插入图片描述
    本篇重点,ASCII码的编码方式和规律,对于汉字编码了解即可,字符串的存储方式。

    展开全文
  • 字符串在内存里的存储方式

    千次阅读 2020-12-18 18:02:12
    字符串在内存里的存储方式 . 一、整数 内存里的二进制表达方式很简单: 计算机内存存储方式本来就是用二进制来存储的,所以可以直接存储整数 十进制 二进制 0 000 1 001 2 010 3 011 那么字符串需要...

    字符串在内存里的存储方式

    .

    一、整数

    在内存里的二进制表达方式很简单:
    计算机内存存储方式本来就是用二进制来存储的,所以可以直接存储整数

    十进制 二进制
    0 000
    1 001
    2 010
    3 011

    那么字符串需要如何存储呢?
    .

    二、字符串

    会使用编号进行存储,可以理解为一个中间编号
    例如:
    A = 65 = 01010101
    字符串A 等于 65编号 等于01010101
    这也就是字符集,通过01010101则能存储对应的字符串A
    ASCII字符集加上拓展字符一共是256个字符,不包含汉子
    所以出现了GB2312,但是还是有很多的字符没有被录用,也不可能一直推出新的字符集来代表字符
    所以又出现了通用字符集unicode
    那么通用字符集的出现解决了很多字符的存储,比如单个字符我们都能用字符集来进行转换.
    如果是多个字符呢?
    比如:
    存储 egg
    那么他们各自字符对应的是

    字符 二进制
    e 01100101
    g 01100111
    g 01100111

    存储的值为:011001010110011101100111
    可是进行存储时,我们如何知道是 01100101 + 01100111 + 01100111 呢?
    没有一个明确的边界处理,以及一个长度是无法获取出对应的字符串。
    也有可能获取出 0110010101100111 +01100111 这样的结果就不是"egg"了
    这个时候就出现了,定长编码和变长编码

    .

    二、定长编码和变长编码

    .
    定长编码:
    定长编码是会把每个字符都给定最长的字节进行存储,比如最大的字符一共占了4个字节(比喻成四个字节),
    那么不管字符是大还是小,都会统一存储为4个字节,这样下来就能清晰的清楚每4个字节代表着什么字符。
    缺点:这样会大量的浪费内存空间,因为小的字符完全用不到四个字节。
    这个时候就出现了变长编码
    .
    变长编码:
    它会根据字符的长度那标记编码的模版

    字符大小 二进制 说明
    [0,127] 0??? 第一个0标时是标记字节大小
    [128,2047] 110??? 10??? 第一次出现的8个数字 110 和第二次出现的八位数字 10 这种的代表 此范围的字节大小

    以此种标记方式,就能清晰的知道一大堆数字的二进制,输出对应的字符串是什么了。
    那这么一长串数字是如何存储到内存里呢。

    二、字符串结构

    1.使用data执行对应数字集的初始位置,这样就知道了第一位二进制数字。
    那么结束位置呢。
    c语言使用\0的方式来表示,不会限制字符串内容,缺点无法直接存储\0,否则会出现异常.
    go语言,会添加一个标时len来存储全部字节的长度。不会限制字符串内容。

    …end结束了…

    展开全文
  • 文章目录字符与字符串ASCII码ASCII码表ASCII码考点例题例1:已知‘A’的ASCII码值为65,字符‘H’存放存储单元M,求M存放的内容。例2:已知‘h’的ASCII码值为104,字符‘a’存放在存储单元M1,字符‘z’...

    字符与字符串

    ASCII码

    在这里插入图片描述

    ASCII码表

    • 可印刷字符:32~126,其余为控制、通信字符
    • 数字:48(0011 0000)~57(0011 1001)
    • 大写字母:65(0100 0001)~90(0101 1010)
    • 小写字母:97(0110 0001)~122(0111 1010)在这里插入图片描述

    ASCII码考点例题

    例1:已知‘A’的ASCII码值为65,字符‘H’存放在某存储单元M中,求M中存放的内容。

    首先明确,M中存放的是‘H’的ASCII码(二进制形式)。
    再由‘A’的码值推出‘H’的码值:

    • 思路1.
      A是第1个字母,H是第8个字母,则H的码值 = 65 + (8-1) = 72
      72 对应二进制为 100 1000,故M中存放的内容为0100 1000
    • 思路2.
      A的码值65写成二进制为0100 0001,A是第1个字母
      H是第8个字母,故对应0100 1000,M中存放内容为0100 1000

    例2:已知‘h’的ASCII码值为104,字符‘a’存放在存储单元M1中,字符‘z’存放在

    存储单元M2中,求M1、M2中存放的内容。
    a : 104 – (8-1) = 97 —> M1中内容为0110 0001
    z : 104 + (26-8) = 122 —> M2中内容为0111 1010

    汉字的表示和编码

    在这里插入图片描述
    例如;a拼音开头的几个字就是这样编码的
    在这里插入图片描述
    字形码是这样的
    在这里插入图片描述

    字符串

    某计算机按字节编址(每个地址
    对应1B)
    ,从地址为2的单元开始,存储字符串“abc”。

    在这里插入图片描述
    其中 xxH是各字符的ASCII编码:
    a:0110 0001 = 61H
    b:0110 0010 = 62H
    c:0110 0011 = 63H
    \0: 0000 0000 = 00H(很多语言中,’ \0 ’作为字符串结尾标志)

    有汉字是怎样存的呢?

    其中有大端模式和小端模式:在所有计算机中,多字节数据都被存放在连续的字节序列中。根据数据中各字节的排列顺序不同,可能有“大端模式”、“小端模式”

    例如:某计算机按字节编址,从地址为2的单元开始,存储字符串“abc啊”

    它在地址中就是这样存的
    在这里插入图片描述
    其中 xxH是各字符的ASCII编码:
    a:0110 0001 = 61H
    b:0110 0010 = 62H
    c:0110 0011 = 63H
    啊:机内码= B0 A1H
    \0: 0000 0000 = 00H

    展开全文
  • C语言字符和字符串存储

    千次阅读 2020-07-25 11:32:08
    数值在计算机中是以二进制的形式存储的。 字符和字符串是先编码后再转化为二进制的形式存储,编码方式如(ASCII码,UTF8)。 例如,char x=‘a’,将一个字符常量放到一个字符变量,实际上并不是把该字符本身放到...
  • 字符串常量到底存放哪个存储

    千次阅读 2017-03-15 17:15:34
    字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”? 比如: char *pstr="hello world!"; 这里,"hello world!"是一个字符串常量, pstr是的变量。 我想问,字符串常量,...
  • 字符与字符串

    2020-05-13 22:31:58
    所有数据储存在计算机中都是用数字表示 从字符到数字的过程,叫做【编码】 从数字到字符的过程,叫做【解码】 其中有一个转换关系,叫做【编码表】(ASCII表) 字符串 使用双引号括起来的字符序列,字符串存储是...
  • 字符串的三种存储方式

    千次阅读 多人点赞 2020-05-25 22:50:08
    工科生一枚,热衷于底层技术开发,有强烈的好奇...  数据结构字符串要单独用一种存储结构来存储,称为串存储结构。这里的串指的就是字符串。无论学习哪种编程语言,操作最多的总是字符串。我们平常使用最多的.
  • 一、计算机里进行非数值处理的对象基本上是字符串数据,比处理浮点和整数都要复杂 string串定义:由 0 个或多个 字符 组成的 有限的 序列,通常记为:s =“a1 a2 a3 … ai …an” ( n≥0 ,且n是有限的)。其中的...
  • 统计字符串中各类字符的个数

    千次阅读 2020-06-08 22:19:54
    统计字符串中各类字符的个数 ...字符串处理是C语言很重要的一个知识点,但C语言汇总并没有字符串类型,因此,只能采用字符数组或者字符指针的形式来使用字符串。要记住一点,不论我们使用的是字符串常量还是字...
  • 使用数组来储存中文(字符串

    万次阅读 2017-12-05 18:42:51
    一个英文字母在计算机中占一个字节,一个汉字在计算机中占两个字节,所以如果使用数组来储存一个汉字,可以写成: char a[3] = { "字" }; 之所以a[]内写3,是因为编译器会自动在字符串后加上一个”\0”作为结束...
  • C语言字符串之输入中文

    千次阅读 2020-02-25 17:27:42
    C语言字符串是以ASCII码表的形式存入的,输入英文字符是以英文字符对应的ASCII码的形式进入寄存器的,例如输出hello world!: #include<stdio.h> int main() { char str[]="hello world!"; printf("%s\n...
  • C语言,只能使用普通的以null结尾的字符数组来表示字符串。这种表示会有很多问题,例如缓冲区溢出等。然而,C++ STL(standard template library标准模板库)包含了一个安全易用的std::string类,这个类就没有...
  • 不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量,而更像是把名字贴值的上边。 所以有些Python程序员会说“Python”没有“变量”,只有“名字”。 eg: 需要注意的地方 (1)...
  • 什么是 Java 字符串

    千次阅读 2019-01-31 10:53:47
    其实,前面的章节我们就已经使用了字符串,例如我们控制台输出的 "Hello World" 、 "imooc" 、"爱慕课"等。 Java 字符串被作为 String 类型的对象处理。 String 类...
  • 字符串常量属于静态存储类别,说明如果函数使用字符串常量,该字符串只会储存一次,整个程序的生命周期内存在,即使函数被调用多次。用双引号扣起来的内容被视为指向该字符串储存位置的指针。 字符串的赋值...
  • 详解 Python 字符串(一):字符串基础

    千次阅读 多人点赞 2021-01-16 20:59:45
    Python 字符串就是一串字符的组合,它是不可变的、有限字符序列,包括可见字符、不可见字符(如空格符等)和转义字符。Python 通过 str 类型提供大量方法来操作字符串,如字符串的替换、删除、截取、复制、...
  • 本文较为全面地总结了字符串的输入和输出,以及C++常用函数等知识内容,其中包括`对字符、字符数组、字符串字符串数组`、`字符串流的定义和输入输出的用法`,`对C/C++字符串的输入输出不同方法的使用和特性进行了...
  • 问题 你想解析一个包含着二进制编码值的字符串,...使用pack()函数把二进制数据保存到一个字符串中: $packed=pack('S4',1974,106,28225,32725); //使用unpack()函数从一个字符串中抽取二进制数据 $nums=unpack('
  • 字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”? 比如: char *pstr="hello world!"; 这里,"hello world!"是一个字符串常量, pstr是的变量。 我想问,字符串常量,...
  • 字符串匹配

    千次阅读 2019-06-27 19:44:14
    在字符串A查找字符串B,那字符串A就是主串,字符串B就是模式串。 我们把主串的长度记作n,模式串的长度记作m。因为我们是主串查找模式串,所以n>m。 几种单模式串匹配算法 BF(暴力)算法 RK算法 BM算法 ...
  • 通常,字符串都可以作为课执行文件的而一部分被储存在数据段,当把程序载入内存是,也载入了程序的而字符串字符串出存在静态存储区,但是程序再开始运行时才会为该数组分配内存。 数组和指针的区别 初始化...
  • java字符串字符串常量池

    千次阅读 2019-03-24 13:31:23
    String作为一种被Final修饰并按照不可变性设计的...字符串在java语言开发的软件经常不可避免地大量使用,往往是内存消耗的大户。java本身又提供了一些构建和操作字符串的快捷或隐秘的方式,使用不当往往产生很多不...
  •  将第二个字符串连同终止字符'/0'复制到第一个参数s1;    2.strncpy(char * s1,char * s2,int n)   将第二个字符串的n个字符复制到第一个参数s1,如果ns2的长度,则复制若干个'/0'直至满足n;    3...
  • 字符串和字符内存的表示形式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 257,584
精华内容 103,033
关键字:

字符串在计算机中是怎么存储的