`

八进制和十六进制

    博客分类:
  • C++
阅读更多

"书到用时方恨少"我又一次体会了这句话的真谛。下面我和大家简单回顾一下八进制和十六进制的表达方式以及在使用过程中的注意事项。

为什么需要八进制和十六进制?

编程中,我们常用的还是10进制……必竟C/C++是高级语言。

比如:

int a = 100,b = 99;

不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。

但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:

0000 0000 0000 0000 0110 0100

面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。

 

用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?

2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。

八进制数的表达方法

C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。

所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。

由于C和C++都没有提供二进制数的表达方法,所以,这里所学的八进制是我们学习的,CtC++语言的数值表达的第二种进制法。

现在,对于同样一个数,比如是100,我们在代码中可以用平常的10进制表达,例如在变量初始化时:

 

int a = 100;

我们也可以这样写:

int a = 0144; //0144是八进制的100;一个10进制数如何转成8进制,我们后面会学到。

 

千万记住,用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制。不过,有一个地方使用八进制数时,却不能使用加0,那就是我们前面学的用于表达字符的“转义符”表达法。

八进制数在转义符中的使用

我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符。

比如,问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。

十六进制数的表达方法

如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。

C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O)

以下是一些用法示例:

 

int a = 0x100F;

int b = 0x70 + a;

有一点很重要,C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。

十六进制数在转义符中的使用

 

转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 '?' 字符,可以有以下表达方式:

 

'?'     //直接输入字符

'\77'   //用八进制,此时可以省略开头的0

'\0x3F' //用十六进制


分享到:
评论

相关推荐

    c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。

    根据给定的文件信息,本篇文章将围绕C语言编程题展开,主要介绍如何从键盘接收一个十进制数,并将其转换成二进制、八进制以及十六进制数进行输出的方法。 ### 一、问题描述 题目要求通过C语言编程实现从键盘输入一...

    怎么样把十进制转换为八进制和十六进制,无需_百度知道

    怎么样把十进制转换为八进制和十六进制。不需进google.com轻松学会

    Java程序十进制转二进制,八进制,十六进制

    在Java编程语言中,将十进制数转换为二进制、八进制和十六进制是常见的操作,尤其在处理计算机数据表示和计算时。本文将深入探讨这些转换方法。 首先,我们要理解不同进制系统的基础。十进制是我们日常生活最常用的...

    二进制、八进制、十六进制转换.doc

    二进制(Binary)、八进制(Octal)和十六进制(Hexadecimal)是计算机领域最常用的三种非十进制计数体系,它们与十进制之间的转换是编程基础的一部分。 6.1 为什么需要八进制和十六进制? 在编程中,尽管我们通常...

    二进制、八进制、十进制和十六进制之间的转换

    本文将深入探讨二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)这四种常见进制之间的转换方法,帮助你更好地理解和应用这些知识。 一、二进制(Binary) 二进制是计算机语言的...

    (0-255)十进制-二进制-八进制-十六进制对照表

    在计算机科学和网络领域,数字通常以不同的进制表示,如十进制、二进制、八进制和十六进制。这些进制系统在处理数据、编程和网络通信时都发挥着重要作用。以下是关于这四种进制系统及其转换的知识点详解: 1. **十...

    用C++向文件输出ASCII码八进制数十六进制数

    #include ... cout十进制"字符"十六进制"八进制"; fount十进制"字符"十六进制"八进制"; for(int i=24;i;i++) { itoa(i,ch_Hx,16); itoa(i,ch_Oct,8); cout(char)i; fount(char)i; } return 0; }

    PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    本文将详细讲解PHP中用于十进制、二进制、八进制和十六进制转换的函数。 一、十进制转换 1. **decbin()** 函数:将十进制数转换为二进制。例如,`decbin(12)` 输出 `1100`,`decbin(26)` 输出 `11010`。该函数支持...

    二进制、八进制、十六进制转换

    在计算机科学中,二进制、八进制和十六进制是三种常用的不同数制,它们主要用于表示和处理数据。二进制系统是最基础的,因为它与计算机内部的电子开关状态(0 和 1)直接对应。而八进制和十六进制则是为了简化二进制...

    汇编语言进制(二进制,八进制,十进制,十六进制)转换

    汇编语言是计算机底层编程的一种语言,它直接对应机器指令,因此对二进制、八进制、十进制和十六进制的理解至关重要。下面我们将详细探讨这些进制及其相互转换。 二进制(Binary)是最基础的数字系统,只包含两个...

    二进制,八进制,十六进制转换

    二进制(Binary)、八进制(Octal)和十六进制(Hexadecimal)是程序员经常打交道的三种非十进制数制,它们在计算机内部表示和处理数据时扮演着关键角色。 **16.1 为什么需要八进制和十六进制?** 虽然计算机内部...

    进制数转换二进制八进制十进制十六进制之间转换方法PPT学习教案.pptx

    每种进制数都有其特定的表示法和规则,如二进制的规则是逢2进1,八进制的规则是逢8进1,十进制的规则是逢10进1,十六进制的规则是逢16进1。 三、进制数之间的转换规则 (1)十进制转换为其他进制数:按位权乘以...

    十进制转换到二进制、八进制、十六进制

    以下是一个简单的C语言程序,演示了如何将十进制数转换为二进制、八进制和十六进制: ```c #include #include void decToBinary(int n) { int binaryNum[32]; int i = 0; while (n > 0) { binaryNum[i] = n ...

    VB十进制数转换为二进制、八进制、十六进制。

    本文将详细讲解如何使用VB将十进制数转换为二进制、八进制和十六进制。 首先,让我们了解基础概念。进制是表示数字的方式,最常用的是十进制(基数为10),而计算机科学中常用的是二进制(基数为2)、八进制(基数...

    二进制、八进制、十六进制转换方式 (2).pdf

    - **十进制转八进制和十六进制**:通常先将十进制数转换为二进制,然后再分组,每三位二进制对应一位八进制,每四位二进制对应一位十六进制。 6.4章节涉及二进制和十六进制之间的直接转换,这在编程中尤其常见,...

    PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析

    本文主要探讨了PHP中实现十进制、二进制、八进制和十六进制转换的相关函数及其用法。 1. **二进制转十进制**: 使用`bindec()`函数将二进制字符串转换为十进制数值。例如,`bindec('10010')`会返回18。这个函数将...

    十进制 八进制 二进制 十六进制转换工具

    本文将详细阐述十进制、八进制、二进制以及十六进制之间的转换工具及其应用。 首先,让我们理解这四种进制的基本原理: 1. **十进制(Decimal)**:我们日常生活中的计数方式,基数为10,每一位的权重由10的幂次...

    二进制、八进制、十六进制转换方式

    十六进制数转换为十进制数的原理与二进制和八进制相同,只是每位的权重是16的幂次方。例如,十六进制数A3转换为十进制数的过程如下: - 第0位 (16^0): 3 * 1 = 3 - 第1位 (16^1): A (10) * 16 = 160 相加得到十...

     二进制、八进制、十六进制

    在计算机科学中,二进制、八进制和十六进制是三种常见的数值表示系统,它们在编程和数据处理中扮演着重要角色。本文将深入探讨这些数字系统的基础概念、转换方法以及它们在IT领域的应用。 二进制(Binary)是计算机...

    八进制与十六进制在编程中的应用解析.docx

    在计算机科学和编程领域,八进制和十六进制是两种常见的数值表示方式,它们在CS(Computer Science)中有着广泛的应用。理解这两种进制系统及其在编程中的使用是计算机专业人员的基础技能。 八进制(Octal)系统...

Global site tag (gtag.js) - Google Analytics