精华内容
下载资源
问答
  • Deleted User..10计算机不使用十六进制.... 0"但是因为将二进制数表示为0和1的字符串使得它们难以阅读,所以将十六进制用作快捷方式:4位组(那些1和0信息)表示为一个十六进制数字.这种从二进制转换为十六进制,反之亦然...

    Deleted User..

    10

    计算机不使用十六进制.计算机中没有处理十六进制值的组件.相反,计算机大多数情况下使用二进制值,数字"是"和"否"信息,表示为"施加电压"和"无电压",也称为"hi"和"lo",或"1"和"1". 0"

    但是因为将二进制数表示为0和1的字符串使得它们难以阅读,所以将十六进制用作快捷方式:4位组(那些1和0信息)表示为一个十六进制数字.这种从二进制转换为十六进制,反之亦然,非常简单.将二进制转换为十进制或十进制转换为二进制涉及更多操作.

    因此,十六进制系统不是由计算机使用,而是由人类使用,用于表示二进制数字,但比从/到十进制数字系统更容易转换.

    十六进制数具有另一个特征,它使它们优于十进制数:两个数字之间的变化仅涉及翻转一个或几个比特并不罕见.得到的十进制数看起来非常不同 - 更改位的值越高,越不同.在十六进制数字中,只有覆盖已更改位的数字会发生变化,其余数字会保留其值.这有助于在心理上将这些十六进制数字所代表的值分组.

    除了十六进制之外,还经常使用八进制系统.它的缺点是一个八进制数字仅描述一组3位,而不是4.因为计算机中的二进制数字(例如地址)通常具有2的幂范围,这些数字更适合组成四组而不是组三个.

    人类没有"被迫"使用十六进制来组装.这只是一件方便的事情.

    +1.当我处理2或位掩码的幂时,我倾向于使用十六进制表示法,而对于其他所有其他东西,我倾向于使用十进制表示法. (2认同)

    展开全文
  • 二进制转换为十六进制数是Prerequisite: Number systems 先决条件: 数字系统 Converting binary numbers into hexadecimal numbers is similar to the conversion of binary into octal, it just requires some ...

    二进制转换为十六进制数是

    Prerequisite: Number systems

    先决条件: 数字系统

    Converting binary numbers into hexadecimal numbers is similar to the conversion of binary into octal, it just requires some modifications. The relationship between binary numbers and hexadecimal numbers is given as:

    将二进制数转换为十六进制数类似于将二进制数 转换为八进制数 ,只需要进行一些修改即可。 二进制数和十六进制数之间的关系给出为:

    DecimalHexadecimalBinary
    0 00000
    1 10001
    2 20010
    3 30011
    4 40100
    5 50101
    6 60110
    7 70111
    8 81000
    9 91001
    10A1010
    11B1011
    12C1100
    13D1101
    14E1110
    15F1111
    小数 十六进制 二元
    0 0 0000
    1个 1个 0001
    2 2 0010
    3 3 0011
    4 4 0100
    5 5 0101
    6 6 0110
    7 7 0111
    8 8 1000
    9 9 1001
    10 一个 1010
    11 1011
    12 C 1100
    13 d 1101
    14 Ë 1110
    15 F 1111

    In hexadecimal number system, we have sixteen digits ranging from 0 to 15 which can be represented using four-bit binary numbers in 24 = 16 ways, so starting from the least significant bit of the binary number, we group four successive bits of the binary number to get its equivalent hexadecimal number as seen from the table above.

    在十六进制系统中,我们有十六个数字,范围从0到15 ,可以使用4位二进制数2 4 = 16的方式表示,因此从二进制数的最低有效位开始,我们将二进制数的四个连续位分组从上表中可以看到二进制数以获取其等效的十六进制数。

    In an integral part, the grouping of four bits is done from the right side to the left side whereas in the fractional part the grouping of four bits is done from left to right and then convert it to its equivalent hexadecimal symbol.

    在整数部分中,四个位的分组是从右侧到左侧完成的,而在分数部分中,四个位的分组是从左到右进行的,然后将其转换为等效的十六进制符号。

    In the process of grouping four bits, one/two/three bits can be added to the left of the MSB in an integral part and/or to the right of the LSB bit of the fractional part of the binary number.

    在对四位进行分组的过程中,可以在二进制数的小数部分的整数部分的MSB左侧和/或LSB的右边添加一/二/三位。

    Note: Whenever we need any additional bits, we only add '0' as the additional bit.

    注:每当我们需要任何其他位时,我们仅将“ 0”添加为其他位。

    Example 1: Convert (01111111.1010)2 to ( ? )16

    示例1:将(01111111.1010) 2转换为(?) 16

    Solution:

    解:

    We will make a grouping of 4 bits from right to left direction in an integral part and from left to right direction in the fractional part and then replace it with the corresponding symbol with the help of the table provided above.

    我们将在一个整数部分中从右到左方向以及在分数部分中从左到右方向将4位分组,然后在上面提供的表格的帮助下将其替换为相应的符号。

    Binary to Hexadecimal Example 1

    Therefore, (01111111.1010)2 = (7F. A)16

    因此, (01111111.1010) 2 =(7F.A) 16

    Example 2: Convert (1110011100.110001)2 to ( ? )16

    示例2:将(1110011100.110001) 2转换为(?) 16

    Solution:

    解:

    The given binary number consists of only 10 bits in an integral part and only 6 bits in the fractional part. So, making a group of 4 bits is not possible. In this case, we have to add bits from our side so that we can make a grouping of 4 bits. Thus, we add two zero bits at the LHS of the MSB in the integral part which will make 12 bits in an integral part, without disturbing its original value. Similarly, two zero bits are added to the RHS of the LSB in the fractional part, which will result in 8 bits in the fractional part and can be grouped in a group of 4 bits.

    给定的二进制数在整数部分仅包含10位,在小数部分仅包含6位。 因此,不可能将4位组成一组。 在这种情况下,我们必须从自己的角度添加位,以便我们可以将4位分组。 因此,我们在整数部分的MSB的LHS处添加两个零位,这将在整数部分中形成12位,而不会干扰其原始值。 类似地,两个零位在小数部分被添加到LSB的RHS中,这将导致小数部分为8位,并且可以分为4位。

    Thus, above given binary number can now be written as: (001110011100.11000100)2

    因此,上述给定的二进制数现在可以写为: (001110011100.11000100) 2

    Binary to Hexadecimal Example 2

    Therefore, (001110011100.11000100)2 = (39C.C4)16

    因此, (001110011100.11000100) 2 =(39C.C4) 16

    Example 3: Convert (100101011110.0110111)2 to ( ? )16

    示例3:将(100101011110.0110111) 2转换为(?) 16

    Solution:

    解:

    Given binary number has 12 bits in an integral part, so it can be easily grouped in a group of 4 bits but there are only 7 bits in the fractional part so we need to add one more additional zero bit to the RHS of LSB in the fractional part. Thus, the above binary number can now be written as: (100101011110.01101110)2

    给定的二进制数在整数部分中具有12位,因此可以轻松地将其分为4位,但是小数部分中只有7位,因此我们需要在LSB的RHS的RHS中再增加一个零位。小数部分。 因此,上述二进制数现在可以写为: (100101011110.01101110) 2

    Binary to Hexadecimal Example 3

    Therefore, (100101011110.01101110)2 = (95E.6E)16

    因此, (100101011110.01101110) 2 =(95E.6E) 16

    翻译自: https://www.includehelp.com/basics/conversion-of-binary-number-system-into-hexadecimal-number-system.aspx

    二进制转换为十六进制数是

    展开全文
  • 最近因工程项目需要读取模块的MAC地址,该设备上传的字符串中包含MAC地址,但是是用十六进制描述,如何将字符串中的十六进制字符转换成十六进制数呢? 例如:字符串中的MAC地址如下 “FA15BF36987F" 一、...

    最近因工程项目需要读取模块的MAC地址,该设备上传的字符串中包含MAC地址,但是是用十六进制描述,如何将字符串中的十六进制字符转换成十六进制数呢?

              例如:字符串中的MAC地址如下

                         “FA15BF36987F"

     

      一、编写函数将字符串中的十六进制字符转换成十六进制数

    uint8_t ASCII_To_Hex(uint8_t number)
    {
    
    	if (number >= '0' && number <= '9')
    		return (number - 0x30);
    
    	else if (number >= 'a' && number <= 'f')
    		return ((number - 'a') + 10);
    	
    	else if (number >= 'A' && number <= 'F')
    		return ((number - 'A') + 10);
    
    	return (0);
    }

       二、编写解析程序       

    char string[20] = “FA15BF36987F";
    uint8_t MAC_Buffer[6];
    uint8_t i;
    uint8_t ch1;
    uint8_t ch2;
    char *p;
    
    p = string;
    for (i=0;i<6;i++)
    {
        ch1 = *p++;
        ch2 = *p++;
    
    	ch1 = ASCII_To_Hex(ch1);
    	ch2 = ASCII_To_Hex(ch2);			
    	MAC_Buffer[i] = (ch1 << 0x04) | ch2;
    }  
    
    

     

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

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

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

    1) 二进制

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

    /合法的二进制
    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(不区分大小写)组成,使用时必须以0x0X(不区分大小写)开头,例如:

    //合法的十六进制
    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 <stdio.h>
    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 <stdio.h>
    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

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

    展开全文
  •  接下来n行,每行一个0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导...
  • 蓝桥杯基础练习-进制转换(十六进制转八进制+十六进制转... 接下来n行,每行一个0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式  输出n行,每行为输入对
  • 输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以...
  • 十六进制数转八进制

    2020-03-19 15:11:59
     接下来n行,每行一个0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式  输出n行,每行为输入对应的八进制正整数。  【注意】  输入的十六进制数不会有...
  • 接下来n行,每行一个09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导0,...
  • 二进制数、八进制数和十六进制数的表示一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊...
  • 二进制数、八进制数和十六进制数的表示一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊...
  •  接下来n行,每行一个0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式  输出n行,每行为输入对应的八进制正整数。 注意  输入的十六进制数不会有前导0...
  • 将一个整数转化为由一个个字符组成十六进制数 将一整数输入函数,新建一个空数组来存十六进制的每一个字符 新建一个数组用来存十六进制会用到的每一个字符“0123456789ABCDEF” 存入的字符是倒放入的,所以...
  •  接下来n行,每行一个09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 注意 输入的十六进制数不会有前导0,比如...
  • 编写一个方法h2D(String s)将一个数字字符和大写字母A、B、C、D、E、F组成十六进制数转换成十进制数。 编写一个测试类,输入一个整数n,后面跟n个十六进制串,调用上述方法把它们转换成十进制整数,并输出它们的...
  • 一、二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用...
  • 在计算机中常用到十进制数、二进制数、八进制数、十六进制数等,下面就这几种在计算机中常用的数制来介绍一下.1.十进制数我们平时数数采用的是十进制数,这种数据是由十个不同的数字0、1、2、3、4、5、6、7、8、9任意...
  •  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十...
  • 接下来n行,每行一个0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式输出n行,每行为输入对应的八进制正整数。注意输入的十六进制数不会有前导0,比如012A...
  • 如何转换成305044这个十进制数十六进制形式 做法如下: unsigned int addr = 0; unsigned temp[10] = {0x00}; addr = id[0] sprintf(temp,"%x",addr); addr = atoi(temp); 或许有更好的办法,望
  • 十六进制转八进制数

    2017-01-04 14:15:10
     接下来n行,每行一个0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式  输出n行,每行为输入对应的八进制正整数。  【注意】  输入的十六进制...
  •  接下来n行,每行一个09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式  输出n行,每行为输入对应的八进制正整数。 【注意】  输入的十六进制数不会有前导...
  • 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。 它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制...
  • #define YES 1//是十六进制数 #define NO 0//不是十六进制数 /* 编写htoi(s),把十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。 字符串中允许包含的数字包括:0~9,a~f或A~F */ int ...
  • 工作中遇到的一个使用方法 利用的就是计算机存储的特性,需要注意大小端 char sDec[4] = {0x05,0xc5,0xb3,0xea}; 低字节序的情况下. 并且 int 占用 32bit.... char sDec[4] = {0x05,0xc5,0xb3,0xea};...pBuf[0] = ...
  • 做为小白,通过一个代码不容易,记录一下 这是蓝桥练习系统的题 ... 接下来n行,每行一个09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式  输出n...
  • 对每个字符做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。 例: 输入:10#Pf4+1#-+A## 输出: 16 3905 10 #include <stdio.h> #include <...
  • 十六进制数输出和占位

    千次阅读 2018-10-18 18:12:47
    十六进制数输出和占位 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 输入一个整数,请你按如下要求输出: 第一行按原样输出, 第二行以十六进制输出(字母小写), 第三行以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,945
精华内容 43,178
关键字:

十六进制数是由什么组成