欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 【C语言】字符型在计算机中的存储方式

【C语言】字符型在计算机中的存储方式

2025/5/15 16:27:32 来源:https://blog.csdn.net/qq_39725309/article/details/143217737  浏览:    关键词:【C语言】字符型在计算机中的存储方式

ASCII对照表:https://www.jyshare.com/front-end/6318/

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCII)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

查看系统中的ascii码:man ascii (显示如下/不完整)

   Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char────────────────────────────────────────────────────────────────────────000   0     00    NUL '\0' (null character)   100   64    40    @001   1     01    SOH (start of heading)      101   65    41    A002   2     02    STX (start of text)         102   66    42    B003   3     03    ETX (end of text)           103   67    43    C004   4     04    EOT (end of transmission)   104   68    44    D005   5     05    ENQ (enquiry)               105   69    45    E006   6     06    ACK (acknowledge)           106   70    46    F007   7     07    BEL '\a' (bell)             107   71    47    G010   8     08    BS  '\b' (backspace)        110   72    48    H011   9     09    HT  '\t' (horizontal tab)   111   73    49    I012   10    0A    LF  '\n' (new line)         112   74    4A    J013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K014   12    0C    FF  '\f' (form feed)        114   76    4C    L015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M016   14    0E    SO  (shift out)             116   78    4E    N017   15    0F    SI  (shift in)              117   79    4F    O020   16    10    DLE (data link escape)      120   80    50    P021   17    11    DC1 (device control 1)      121   81    51    Q022   18    12    DC2 (device control 2)      122   82    52    R023   19    13    DC3 (device control 3)      123   83    53    S024   20    14    DC4 (device control 4)      124   84    54    T025   21    15    NAK (negative ack.)         125   85    55    U026   22    16    SYN (synchronous idle)      126   86    56    V027   23    17    ETB (end of trans. blk)     127   87    57    W030   24    18    CAN (cancel)                130   88    58    X031   25    19    EM  (end of medium)         131   89    59    Y032   26    1A    SUB (substitute)            132   90    5A    Z033   27    1B    ESC (escape)                133   91    5B    [034   28    1C    FS  (file separator)        134   92    5C    \  '\\'035   29    1D    GS  (group separator)       135   93    5D    ]036   30    1E    RS  (record separator)      136   94    5E    ^037   31    1F    US  (unit separator)        137   95    5F    _040   32    20    SPACE                       140   96    60    `041   33    21    !                           141   97    61    a042   34    22    "                           142   98    62    b043   35    23    #                           143   99    63    c044   36    24    $                           144   100   64    d045   37    25    %                           145   101   65    e046   38    26    &                           146   102   66    f047   39    27    '                           147   103   67    g050   40    28    (                           150   104   68    h051   41    29    )                           151   105   69    i052   42    2A    *                           152   106   6A    j053   43    2B    +                           153   107   6B    k054   44    2C    ,                           154   108   6C    l055   45    2D    -                           155   109   6D    m056   46    2E    .                           156   110   6E    n057   47    2F    /                           157   111   6F    o060   48    30    0                           160   112   70    p061   49    31    1                           161   113   71    q062   50    32    2                           162   114   72    r063   51    33    3                           163   115   73    s064   52    34    4                           164   116   74    t065   53    35    5                           165   117   75    u066   54    36    6                           166   118   76    v067   55    37    7                           167   119   77    w070   56    38    8                           170   120   78    x071   57    39    9                           171   121   79    y072   58    3A    :                           172   122   7A    z073   59    3B    ;                           173   123   7B    {074   60    3C    <                           174   124   7C    |075   61    3D    =                           175   125   7D    }076   62    3E    >                           176   126   7E    ~077   63    3F    ?                           177   127   7F    DEL

例如,字符串:“hello world” —>字符串多个字符组合在一起(C语言中没有string类型,以字符数组的形式存储字符串:“hello world” )

char a = 'A' ---> 大小: 1个字节:  8个bit位
存储:  'A' 保存在 变量a里面  --->存储必然和二进制有关
单纯‘A’ 没有二进制怎么办呢? ---> C库就制作一种对应码  ---> ASCII码 (A码)会记录一些特殊字符的对应的数值,用于计算机的存储数据。例如:‘A’ ----> 65

所以,字符**‘A’**在ascii码表中表示为:

Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
────────────────────────────────────────────────────────────────────────
000   0     00    NUL '\0' (null character)   100   64    40    @
001   1     01    SOH (start of heading)      101   65    41    A  ---> 'A'--65--0100 0001
002   2     02    STX (start of text)         102   66    42    B
字符和整型的大小不一样 
双方的标志位也不一样  :最终需要通过标志来判断 65到底普通数值,还是字符'A'

分析: 字符串在计算机中的存储(对照ASCII码表):

“hello world”  --->人眼看到的 
“hello world\0”--->在缓冲区的样子  
一次解码: 'h''e''l''l''o'' ''w''o''r''l''d''\0' --->字符串真实模样 ,由多个字符串联在一起
通过A码:  '104''101''108'‘108’‘111’‘32’ --->自行操作 
存储: 将A码转化为二进制 '01101000'  '01100101'   '01101100'  ‘01101100’   ‘01101111’   ‘00100000’

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词