zoukankan      html  css  js  c++  java
  • windows程序设计04_显示汉字的16进制

    看下面的代码

    //utf-8编码
    #include<stdio.h>
    int main() {
    	char a[] = "中国";
    	printf("%x
    ", a[0]);
    	getchar();
    	return 0;
    }
    

    这个输出什么?不知道大家怎么想,我的第一感觉是输出汉字"中"的第1个字节的16进制.但用VS运行,输出的是:

    ffffffd6
    

    4个字节,不是1个字节.为什么?
    通过调试,"中"在内存里是D6D0,这其实是"中"的GB2312编码。
    a[0]对应的字节是D6,二进制是11010110
    vs的char是有符号的,内存中以补码表示数值。
    补码11010110对应的反码是11010101
    补码11010110对应的原码是10101010,原码10101010对应的10进制是-42
    printf把-42强转成有符号的32位int
    -42的原码是10000000000000000000000000101010
    -42的反码是11111111111111111111111111010101
    -42的补码是11111111111111111111111111010110
    补码11111111111111111111111111010110对应的16进制就是ffffffd6

  • 相关阅读:
    HIFU控制器的显示板
    风扇控制板
    直流源控制板
    HIFU的心脏
    强劲的全桥驱动
    脑电模块
    另一个12导联心电模块
    数据处理,pandas方面遇到的问题
    6.13 django
    python 零基础学习之路-06 常用模块
  • 原文地址:https://www.cnblogs.com/zhouyang209117/p/7979061.html
Copyright © 2011-2022 走看看