精华内容
下载资源
问答
  • 十六进制常量书写形式
    2022-04-08 16:20:26

    C语言标准中,整数可以直接使用八进制、十进制、十六进制三种表示,二进制标准没有支持,但是部分编译器提供支持。

    进制的表示

    一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。

    二进制:二进制数是由0和1组成的,表示时需要在前面加上0B或0b(不区分大小写)

    如int a=0b1011 int a=0b10111

    注意:标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。

    下面是实际测试的结果:

    • Visual C++ 6.0 不支持。
    • Visual Studio 2015 支持,但是 Visual Studio 2010 不支持;可以认为,高版本的 Visual Studio 支持二进制数字,低版本的 Visual Studio 不支持。
    • GCC 4.8.2 支持,但是 GCC 3.4.5 不支持;可以认为,高版本的 GCC 支持二进制数字,低版本的 GCC 不支持。
    • LLVM/Clang 支持(内嵌于 Mac OS 下的 Xcode 中)。

    八进制:八进制数是由0~7组成的,表示时需要在开头加上0;

    如int a=017 int a=012345

    十六进制:十六进制数是由0~9,字 母 A~F 或 a~f(不区分大小写)组成,表示时需要在开头加上0X或0x(不区分大小写)

    如0X1ABF56 0x1254f

    更多相关内容
  • 十六进制表示法

    万次阅读 多人点赞 2019-12-22 13:44:24
    一个字节由8位组成。在二进制表示法中,他的值域是00000000₂~11111111₂。如果看成十进制整数,他的值域就是0₁₀~255₁₀。...十六进制(简写为”hex”)使用数字’0’~’9’以及字符以及字符...

    一个字节由8位组成。在二进制表示法中,他的值域是00000000₂~11111111₂。如果看成十进制整数,他的值域就是0₁₀~255₁₀。两种符号表示法对于描述位模式来说都不是非常方便。二进制表示法太冗长,而十进制表示法与位模式的相互转化很麻烦。替代的方法是以16为基数,或者叫做十六进制(hexadecimal)数,来表示位模式。十六进制(简写为”hex”)使用数字’0’~’9’以及字符以及字符’A’~’F’来表示16个可能的值。如下所示展示了16个十六进制数字对应的十进制值和二进制值。用十六进制书写,一个字节的值域为00₁₆~FF₁₆。

    在这里插入图片描述

    在C语言中,以0x或Ox开头的数字常量被认为是十六进制的值。字符’A’~'F’既可以是大写,也可以是小写。例如,我们可以将数字FA1D37B16写作 OxFA1D37B,或者Oxfald37b,甚至是大小写混合,比如,0xFalD37b。
    编写机器级程序的一个常见任务就是在位模式的十进制、二进制和十六进制表示之间人工转换。 二进制和十六进制之间的转换比较简单直接,因为可以一次执行一个十六进制数字的转换。 数字的转换可以参考如图, 一个简单的窍门是,记住十六进制
    数字A,C和F相应的十进制值。而对于把十六进制值B、D和E转换成十进制值,则可以通过计算它们与前三个值的相对关系来完成。
    比如,假设给你一个数字0x173A4C。可以通过展开每个十六进制数字,将它转换为二进制格株式,如下所示:
    十六进制 1 7 3 A 4 C
    二进制 0001 0111 0011 1010 0100 1100
    这样就得到了二进制表示 000101110011101001001100。反过来,如果给定一个二进制数字1111001010110110110011,可以通过首先把它分为每4位一组来转换为十六进制。不过要注意,如果位总数不是4的倍数,最左边的一组可以少于4位,前面用0补足。 然后将每个4位组转换为相应的十六进制数字:
    二进制 11 1100 1010 1101 1011 0011
    十六进制 3 C A D B 3

    展开全文
  • 十六进制表示法(进制转换)

    千次阅读 多人点赞 2019-03-10 22:30:00
    本篇文章记录十六进制表示法,以及与十进制、二进制之间的转换方法。十进制的数字表示我们日常生活中一直在使用,在计算机中使用二进制表示法。计算机系统中一个使用字节作为基本的读写单位,一个字节由8位组成。 ...

    本篇文章记录十六进制表示法,以及与十进制、二进制之间的转换方法。十进制的数字表示我们日常生活中一直在使用,在计算机中使用二进制表示法。计算机系统中一个使用字节作为基本的读写单位,一个字节由8位组成。

    ​ 在二进制表示法中,他的值域为 00000000~11111111 。在十进制中值域则为 0~255。 这两种符号表示法对于描述位模式来说都不是非常方便。 二进制表示法太冗长,而十进制表示法与位模式的互相转化很麻烦。 替代的方法是,以16为基数,也称十六进制数 ,来表示位模式。十六进制(简写为“hex”)使用数字 ‘0’ ~ ‘9’ 以及字符 ‘A’ ~ ‘F’ 来表示 16 个可能的值。下图展示了 16 个 十六进制数字对应的 十进制值 和 二进制值。用十六进制书写,一个字节的值域为 00 ~ FF


    十六进制数字0123456789ABCDEF
    十进制值0123456789101112131415
    二进制值0000000100100011010001010110011110001001101010111100110111101111

    在C 语言中,以 0x 或 0X 开头的数字常量被认为是十六进制。

    编写机器级程序的一个常见任务就是在位模式 的十进制、二进制、十六进制 表示之间人工转换。 二进制和十六进制之间的转换比较简单直接,因为可以一次执行一个十六进制数字的转换。数字的转换可以参考上面的表格。

    下面主要介绍进制之间的转换方法

    二进制与十六进制之间的转换

    比如,假设给你一个数字 0x173A4C。可以通过展示每个十六进制数字,将它转换为二进制格式,如下所示:

    十六进制173A4C
    二进制000101110011101001001100

    这样就得了二进制表示 000101110011101001001100。

    反过来如果给定一个二进制数字 1111001010110110110011,可以通过首先把它分为每 4 位一组来转换为十六进制。不过要注意,如果位总数不是 4 的倍数,最左边的一组可以少于四位,前面用 0 补足。 然后将每个 4 位 组 转换为相应的十六进制数字:

    二进制1111001010110110110011
    十六进制3CADB3

    十进制与十六进制之间的转换

    1. 当值 x 是 2 的 非负整数 n 次幂时,也就是 x = 2^n , 这种情况我们很容易将 x 写成 十六进制 形式,只要记住 x 的二进制 表示 就是 1 后面跟 n 个 0 。十六进制 数字0 表示 4 个二进制 0. 所以,当n表示成 i + 4j 的形式, 其中 0 <= i <= 3 , 我们可以把 x 写成开头 的十六进制数字为 1(i=0)、2(i=1)、4(i=2)或者 8(i=3),后面跟随者 j 个十六机制的 0 。比如 x=2048=2^11, 我们有 n = 11 = 3 + 4*2, 从而得到十六进制表示 0x800。

    2. 十进制和十六进制表示 之间的转换需要使用乘法或者除法来处理一般情况。 将一个十进制数 x 转换为 十六进制,可以反复地用 16 除 x,得到一个 商 q 和一个余数 r,也就是 x = q16 + r 。 然后,我们用十六进制数字表示的 r 作为最低位数字*,并且通过对 q 反复进行这个过程 得到剩下的数字。 例如,考虑十进制 314156 转换:

    314156=19634*16+12C
    19634=1227*16+22
    1227=76*16+11B
    76=4*16+12C
    4=16*0+44

    从这里我们能读出十六进制表示为 0x4CB2C (最后的余数为最高位)。

    ​ 反过来将一个十六进制数字转换为十进制数字,我们可以用相应的16的幂乘以每个十六进制数字。比如,给定数字 0x7AF,我们计算它对应的十进制为 7 * 16^2 + 10 * 16 + 15 = 1792 + 160 + 15 = 1967。

    展开全文
  • 二进制数、八进制数和十六进制数的表示一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊...

    C语言中的二进制数、八进制数和十六进制数

    C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。

    二进制数、八进制数和十六进制数的表示

    一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。

    1) 二进制

    二进制由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头,例如:

    //合法的二进制

    int a = 0b101; //换算成十进制为 5

    int b = -0b110010; //换算成十进制为 -50

    int c = 0B100001; //换算成十进制为 33

    //非法的二进制

    int m = 101010; //无前缀 0B,相当于十进制

    int n = 0B410; //4不是有效的二进制数字

    读者请注意,标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。

    下面是实际测试的结果:

    Visual C++ 6.0 不支持。

    Visual Studio 2015 支持,但是 Visual Studio 2010 不支持;可以认为,高版本的 Visual Studio 支持二进制数字,低版本的 Visual Studio 不支持。

    GCC 4.8.2 支持,但是 GCC 3.4.5 不支持;可以认为,高版本的 GCC 支持二进制数字,低版本的 GCC 不支持。

    LLVM/Clang 支持(内嵌于 Mac OS 下的 Xcode 中)。

    2) 八进制

    八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o),例如:

    //合法的八进制数

    int a = 015; //换算成十进制为 13

    int b = -0101; //换算成十进制为 -65

    int c = 0177777; //换算成十进制为 65535

    //非法的八进制

    int m = 256; //无前缀 0,相当于十进制

    int n = 03A2; //A不是有效的八进制数字

    3) 十六进制

    十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,例如:

    //合法的十六进制

    int a = 0X2A; //换算成十进制为 42

    int b = -0XA0; //换算成十进制为 -160

    int c = 0xffff; //换算成十进制为 65535

    //非法的十六进制

    int m = 5A; //没有前缀 0X,是一个无效数字

    int n = 0X3H; //H不是有效的十六进制数字

    4) 十进制

    十进制由 0~9 十个数字组成,没有任何前缀,和我们平时的书写格式一样,不再赘述。

    二进制数、八进制数和十六进制数的输出

    C语言中常用的整数有 short、int 和 long 三种类型,通过 printf 函数,可以将它们以八进制、十进制和十六进制的形式输出。上节我们讲解了如何以十进制的形式输出,这节我们重点讲解如何以八进制和十六进制的形式输出,下表列出了不同类型的整数、以不同进制的形式输出时对应的格式控制符:

    short

    int

    long

    八进制

    %ho

    %o

    %lo

    十进制

    %hd

    %d

    %ld

    十六进制

    %hx 或者 %hX

    %x 或者 %X

    %lx 或者 %lX

    十六进制数字的表示用到了英文字母,有大小写之分,要在格式控制符中体现出来:

    %hx、%x 和 %lx 中的x小写,表明以小写字母的形式输出十六进制数;

    %hX、%X 和 %lX 中的X大写,表明以大写字母的形式输出十六进制数。

    八进制数字和十进制数字不区分大小写,所以格式控制符都用小写形式。如果你比较叛逆,想使用大写形式,那么行为是未定义的,请你慎重:

    有些编译器支持大写形式,只不过行为和小写形式一样;

    有些编译器不支持大写形式,可能会报错,也可能会导致奇怪的输出。

    注意,虽然部分编译器支持二进制数字的表示,但是却不能使用 printf 函数输出二进制,这一点比较遗憾。当然,通过转换函数可以将其它进制数字转换成二进制数字,并以字符串的形式存储,然后在 printf 函数中使用%s输出即可。考虑到读者的基础还不够,这里就先不讲这种方法了。

    【实例】以不同进制的形式输出整数:

    #include

    int main()

    {

    short a = 0b1010110; //二进制数字

    int b = 02713; //八进制数字

    long c = 0X1DAB83; //十六进制数字

    printf("a=%ho, b=%o, c=%lo\n", a, b, c); //以八进制形似输出

    printf("a=%hd, b=%d, c=%ld\n", a, b, c); //以十进制形式输出

    printf("a=%hx, b=%x, c=%lx\n", a, b, c); //以十六进制形式输出(字母小写)

    printf("a=%hX, b=%X, c=%lX\n", a, b, c); //以十六进制形式输出(字母大写)

    return 0;

    }

    运行结果:

    a=126, b=2713, c=7325603

    a=86, b=1483, c=1944451

    a=56, b=5cb, c=1dab83

    a=56, b=5CB, c=1DAB83

    从这个例子可以发现,一个数字不管以何种进制来表示,都能够以任意进制的形式输出。数字在内存中始终以二进制的形式存储,其它进制的数字在存储前都必须转换为二进制形式;同理,一个数字在输出时要进行逆向的转换,也就是从二进制转换为其他进制。

    输出时加上前缀

    请读者注意观察上面的例子,会发现有一点不完美,如果只看输出结果:

    对于八进制数字,它没法和十进制、十六进制区分,因为八进制、十进制和十六进制都包含 0~7 这几个数字。

    对于十进制数字,它没法和十六进制区分,因为十六进制也包含 0~9 这几个数字。如果十进制数字中还不包含 8 和 9,那么也不能和八进制区分了。

    对于十六进制数字,如果没有包含 a~f 或者 A~F,那么就无法和十进制区分,如果还不包含 8 和 9,那么也不能和八进制区分了。

    区分不同进制数字的一个简单办法就是,在输出时带上特定的前缀。在格式控制符中加上#即可输出前缀,例如 %#x、%#o、%#lX、%#ho 等,请看下面的代码:

    #include

    int main()

    {

    short a = 0b1010110; //二进制数字

    int b = 02713; //八进制数字

    long c = 0X1DAB83; //十六进制数字

    printf("a=%#ho, b=%#o, c=%#lo\n", a, b, c); //以八进制形似输出

    printf("a=%hd, b=%d, c=%ld\n", a, b, c); //以十进制形式输出

    printf("a=%#hx, b=%#x, c=%#lx\n", a, b, c); //以十六进制形式输出(字母小写)

    printf("a=%#hX, b=%#X, c=%#lX\n", a, b, c); //以十六进制形式输出(字母大写)

    return 0;

    }

    运行结果:

    a=0126, b=02713, c=07325603

    a=86, b=1483, c=1944451

    a=0x56, b=0x5cb, c=0x1dab83

    a=0X56, b=0X5CB, c=0X1DAB83

    十进制数字没有前缀,所以不用加#。如果你加上了,那么它的行为是未定义的,有的编译器支持十进制加#,只不过输出结果和没有加#一样,有的编译器不支持加#,可能会报错,也可能会导致奇怪的输出;但是,大部分编译器都能正常输出,不至于当成一种错误。

    C语言中的二进制数、八进制数和十六进制数相关教程

    展开全文
  • 十六进制数后跟L/U/UL解析

    千次阅读 2019-03-27 14:43:30
    C语言支持两种不同的数值类型,整数类型(也称整型),浮点类型(也称浮点型)。整数类型的值是整数,而浮点类型的...因此,最大的16位整数的二进制表示形式是0111 1111 1111 1111,对应的值是32767(即2^15-1)。而...
  • 0x是16进制的前缀,H是16进制的后缀 ...在C语言里,整数有三种表示形式:十进制,八进制,十六进制。 其中以数字0开头,由0~7组成的数是八进制。以0X或0x开头,由0~9,A~F或a~f 组成是十六进制。除表示正负...
  • 相关问题十进制数,十六进制数,7D,八进制数,十六进制数,十六进制,数码,十六进制,其中,十六进制,Python,中,0xad,十六进制,数字,形式,十进制,常数,十六进制,常数,地址,值,十六进制,值,值,之间,冒号,记,法,冒号,十六进制...
  • 4.整体书写风格要统一(不要这里是驼峰,那里是下划线,这里的逻辑段落空三行,那里相同的逻辑段落空5行等等) 5.普通变量,方法名要小驼峰,类名要大驼峰,常量要使用全部大写加上下划线命名法 6.要学习相应的代码...
  • C语言编程预备知识-进制常量什么是进制进制也就是进位计数制,是人为定义的带进位的计数方法进位制计数法是一种记数方式,故亦称进位记数法计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目...
  • 1.java中字符占两个字节,因为char类型占两个字节(16位),而C,C++中占1字节(8位)。2. 变量定义第一步:声明(Declaration)第二步:...4.各进制书写方法十进制无前缀八进制(octal)前面加数字“0”十六进制(hexadecim...
  • C语言数据类型、sizeof关键字、基本类型书写(二 / 八 / 十 / 十六进制
  • c语言中整型常量和实型常量的写法

    千次阅读 2020-06-12 09:43:38
    十进制:平常的写法,不用加后缀,后缀 ...十六进制:前面加0x 长整型常量:后面加字母L long num = 10L; 无符号整型常量:末尾加U unsigned num = 10U; 无符号长整型常量:后缀为LU unsigned long num = 10LU; ...
  • 4.整体书写风格要统一(不要这里是驼峰,那里是下划线,这里的逻辑段落空三行,那里相同的逻辑段落空5行等等) 5.普通变量,方法名要小驼峰,类名要大驼峰,常量要使用全部大写加上下划线命名法 6.要学习相应的代码...
  • 一, 合法标识符 ... 十六进制:0xA1(以0x开头) 实型常量:(强调E) E的前面必须有数字,E的后面必须是整数 字符型: 'n' ,'N' ,'\n' 字符串型:"abc","123","" 三,合法转义字符 一...
  • 从二进制开始 二进制(binary)是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。...
  • 可以是十进制、八进制、十六进制的整数常量(注意并没有二进制)。 八进制:前缀0 十六进制:前缀0x(x大小写均可以) 十进制:无前缀默认为十进制 整数常量也可以带后缀,U和L(大小写均可以,但是推荐使用大写形式...
  • 在C语言里,整数有三种表示形式:十进制,八进制,十六进制。 其中以数字0开头,由0到7组成的数是八进制。 以0X或0x(0x中是数字0,不是大写字母O)开头,由0-9,A-F或a~f 组成是十六进制。 除表示正负的符号外,以1-...
  • C语言程序中,整型常量书写形式不包括_________。 A. 二进制 B. 八进制 C. 十进制 D. 十六进制 9. 在C语言中下列运算符中结合性属于自右向左的是_________。 A. && B. - C<< D. -> 10. 设int x;则与计算x...
  • 进制:进制是一种记数方式 ,可以用有限的数字符号代表所有的数值。由特定的数值组成。...十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以ox开始。1.2 进制的由来几乎每个民族最早都使用都十进...
  • C语言编程预备知识-进制常量什么是进制进制也就是进位计数制,是人为定义的带进位的计数方法 进位制计数法是一种记数方式,故亦称进位记数法计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目...
  • C语言中整型常量的表示方法

    千次阅读 2021-05-21 12:45:02
    整形常量就是整常数,在c语言中,使用的整常数有八进制,十进制和十六进制三种1)十进制常数:十进制常数没有前缀,其数码为0~9。以下各数是合法的十进制整常数:237、-568、65535、1627;以下各数不是合法的十进制整...
  • C语言常量的类型

    2021-05-18 09:47:46
    (一)数值转换数字的四种表现形式:①:二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2.。例:110101②:八进制:以数字0(注意不是以字母O,o)开头,所有数字由0~7构成,逢八进一,八进制数中不会出现8。...
  • 一个字节由8位组成。在二进制表示法中,它的值域是00000000~11111111。如果看成十进制整数,它的值域就是0~255。两种符号表示法对于描述位模式来说都不是非常方便。二进制表示法...
  • 如果系统支持c99的十六进制格式浮点数,则可以使用a或A代替e或E 浮点数的表示,一般使用以下格式表示: [+|-] | [小数点前] | [小数点.] | [小数点后] | [e|E + 整数表示10的幂] float和double的打印使用%f,long ...
  • Hellow二进制

    2021-01-17 17:10:17
    Hellow 二进制 在web和二进制中我一眼就看准了二进制,为什么会这样说的呢,可能是跟数字有缘,哈哈哈哈哈哈。确实,跟数字挺有缘的,毕竟小编...二进制数据是按照一串0和 1的形式编码的。而绝大多数的程序会给某些特殊
  • C语言入门知识:常量

    2021-05-21 09:33:39
    (一)数值转换数字的四种表现形式:①:二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2.。例:110101②:八进制:以数字0(注意不是以字母O,o)开头,所有数字由0~7构成,逢八进一,八进制数中不会出现8。...
  • C++常量(constant)

    千次阅读 2021-05-20 13:14:54
    在程序执行过程中,其值不能...1. 整型常量在 C++ 中,使用的整型常量可以用八进制、十进制和十六进制 3 种方式表示,具体如下所示:十进制整型常量是最常用的一种表示形式,如 321、-123。八进制整型常量以 0 开...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,773
精华内容 3,109
关键字:

十六进制常量书写形式