【C语言基础】:八进制数和十六进制数、ASCII编码与运算符

要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。

                                                                                                                    —— 《枫》

这篇文章将继续为对C语言感兴趣的大佬们各位带来关于八进制数和十六进制数、ASCII编码与操作符的介绍。

目录

八进制数和十六进制数

介绍

注意:

ASCII编码

介绍

码表

 注意:

 运算符

分类

算术运算符

加减运算符( + 和 - )

乘法运算符(*)

除法运算符( / )

求余(模)运算符( % )


八进制数和十六进制数

介绍

把进制数是用数字0~7书写的。八进制数的每一位表示一个8的幂(就像十进制数的每一位表示10的幂一样)。因此,八进制数 237 表示成十进制数计算如下图左侧:(2*8^2+3*8^1+7*8^0=128+24+7=159)

十六进制数是用数字0~9加上字母A~F书写的,其中字母A~F表示10~15的数。十六进制数的每一位表示一个16的幂,十六进制数 1AF 的十进制数值计算如上图右侧:(1*16^2+10*16^1+15*16^0=256+160+15=431)

注意:

  • 十进制数一定不能以零开头:

               15    255   32767

  • 八进制数必须以零开头:

               017   0377   07777

  • 十六进制数中字母既可以是大写,也可是小写:

              0xff   0xfF   0Xff   0XFF

ASCII编码

上一篇说这次为大家介绍ASCII编码表,我来咯。

介绍

我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样法人二进制存储的呢?

如果我们自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家通信,不造成混乱,后来美国国家标准学会(ANSI)出台了一个标准ASCII编码,C语言中的字符就遵循了ASCII编码的方式。

码表

参考:https://zh.cppreference.com/w/c/language/ascii

 注意:

我们不需要记住所有的ASCII码表中的数字,使用时查看就可以,不过我们最好能掌握几组特殊的数据:

  • 字符A~Z的ASCII码值从65~90
  • 字符a~z的ASCII码值从97~122
  • 对应的大小写字符(a和A)的ASCII码值的差值是32
  • 数字字符0~9的ASCII码值从48~57
  • 换行 \n 的ASCII值是:10
  • 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察

 运算符

分类

运算符是构建表达的基本工具,C语言拥有异常丰富的运算符。

  • 算术运算符
  • 赋值运算符
  • 自增自减运算符

本次只对算术运算符进行基本介绍,其余介绍请待下篇。 

算术运算符

这类运算符可以执行加法、减法、乘法和除法。

加减运算符( + 和 - )

加法类运算符和乘法类运算符都属于二元运算符,因为他们需要两个操作数。一元运算符只需要一个操作数:

a = +1;  // + 是一元运算符号
b = -1;  // - 是一元运算符号

一元运算符主要用于强调某数值常量的正负。

#include <stdio.h>

int main()
{
    int x = 44 + 22;
    int y = 66 - 34;
    printf("%d\n",x); //打印出66
    printf("%d\n",y); //打印出32
    return 0;
}

上图为二元运算符( + 和 - )的应用。

乘法运算符(*)

运算符 * 用来完成乘法。

#include <stdio.h>

int main()
{
    int num = 5;
    printf("%d\n",num*num); // 输出25
    return 0;
}

除法运算符( / )

运算 / 用来完成除法

除号的两端如果是整数,执行的是整数除法,得到的结果也是整数。

#include <stdio.h>

int main()
{
    float x = 6 / 4;
    int y = 6 / 4;
    printf("%f\n",x);  //输出1.000000
    printf("%d\n",y);  //输出1
    return 0;
}

上面示例中,尽管变量 x 的类型是 float ,但是 6 / 4 得到的结果是 1.000000 (默认保留六位小数),而不是 1.5 。原因就在于C语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。

如果希望得到浮点数结果,两个运算数就必须至少有一个浮点数,这时C语言就会进行浮点数除法。

#include <stdio.h>

int main()
{
    float x = 6.0 / 4;  //或者写成 6 / 4.0
    printf("%f\n",x);   //输出 1.500000
    return 0;
}

上面示例中, 6.0 / 4 表示进行浮点数除法,得到的结果就是 1.5

再看一个例子:

#include <stdio.h>

int main()
{
    int score = 5;
    score = (score / 20) * 100;  //输出0
    return 0;
}

上面的代码,你可能会觉得经过运算,score 会等于 25 ,但实际上 score = 0。这是因为

score / 20 是整除,会得到一个整数值 0 ,所以乘以 100 后得到的也是 0

为了得到预想的结果,可以将除数 20 改为 20.0,让整数除法变成浮点数除法。

#include <stdio.h>

int main()
{
    int score = 5;
    score = (score / 20.0) * 100;  //输出25
    return 0;
}

求余(模)运算符( % )

运算符 % 表示求余运算,即返回两个整数相除的余值。这个运算符只能用于整除,不能用于浮点数

#include <stdio.h>

int main()
{
    int x = 6 % 4;
    printf("%d\n",x);  //输出2
    return 0;
}

负数求余的规则是,结果的正负号由第一个运算数正负号决定。

#include <stdio.h>

int main()
{
    printf("%d", 11 % -5);  //输出  1
    printf("%d",-11 % -5);  //输出 -1
    printf("%d",-11 % 5);   //输出 -1
}

上面的示例中,第一个运算数的正负号( 11 或 -11 )决定了结果的正负。

好啦,今天的分享到这儿就结束了,感谢大佬能看到这里,感谢支持,感恩!!!

当你在荒废时间,有多少人在拼命。别在最该奋斗的日子,选择了安逸。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高乐高有点矮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值