C语言基础-day04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


提示:以下是本篇文章正文内容,下面案例可供参考

进制基础知识

什么是进制

  • 进制也就是进位计数制,是人为定义的带进位的计数方法。
  • 而在计算机中定义的进制有二进制、八进制、十进制、十六进制

二进制

二进制是基数为2,逢2进1。在二进制中,使用01两种符号。在算术运算里会发生进位、借位
使用二进制时,必须以0b0B开头, 不区分大小写。
表示方式:

    int binary1 = 0b101; // 010的二进制表示
    int binary2 = 0b010; // 101的二进制表示

二进制算数运算

加法:算术运算: 0+0=0、0+1=1 、1+0=1 、1+1=10(向高位进1)
减法:算术运算: 0-0=0、0-1=1(向高位借1)、1-0=1、1-1=0

#include <stdio.h>
int main() 
{
    // 二进制加法运算 010 + 101
    int binary1 = 0b101; // 010的二进制表示
    int binary2 = 0b010; // 101的二进制表示
    int result1 = binary1 + binary2; // 执行加法运算
    int result2 = binary1 - binary2; // 执行加法运算
 
    // 输出结果 : 以二进制加法的结果(十进制表示) 
    printf("二进制加法结果为:%d\n", result1); //结果为7转换为111; 
    printf("二进制加法结果为:%d\n", result2); //结果为7转换为111; 
 
    return 0;
}

八进制

八进制是一种基数为8的记数系统,逢8进1。八进制采用0至7这八个数字来表示数值,所以在八进制中不会出现8或8以上的数。在八进制数中,每一位数字的权值为8的n次方,n从0开始。
使用时必须以0开头,注意是数字 0,不是字母 O;

#include <stdio.h>
int main() {
    int binary = 0100; // 100的八进制表示
    printf("八进制数0101转换为十进制数为:%d\n", binary);// 八进制数100转换为十进制数64
    return 0;
}

二进制与八进制关系表

二进制八进制
0000
0011
0102
0113
1004
1015
1106
1117

二进制转换八进制

二进制从后照着二进制与八进制关系表对照,不足是前面补0;
例如:
二进制数为:1111101010 转换八进制数为:1752

在这里插入图片描述

八进制转二进制

八进制数为:165 转换二进制数为:1110101
也是同理。最前面的"0"可以抹去
在这里插入图片描述

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

这两者之间的转换可以借助十进制或者二进制完成,可以先将八进制转换成十进制或二进制,再转换成十六进制。通过间接转换来实现。

十进制

计算机中的十进制是一种计数系统,逢10进1。它使用0到9这十个数字进行计数。十进制是我们日常生活中最常用的计数方式,也是计算机内部处理数据的主要方式之一。
在计算机中,所有的数据都是以二进制的形式存储和处理的。但是,为了方便人类的阅读和交流,通常会将二进制数转换成十进制数进行显示或输出。

二进制与十进制关系表

二进制十进制
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019

二进制转换十进制

将二进制数从右至左依次写出,每个位上的数乘以对应的权值,然后将所有乘积相加即可得到十进制数。
例如,二进制数1011转换为十进制数为:

12^3+02^2+12^1+12^0=8+0+2+1=11

画图案例:二进制为101101 转换十进制为:109
在这里插入图片描述

十进制转换二进制

十进制转二进制采用的是除二取余。余不为"0",即为1,余为"0",即为0,向下往上取数。
十进制数为:168 转换 二进制数为:10101000
例如:
在这里插入图片描述

十进制转换八进制

十进制转八进制采用的是除八取余。余为"0",即为0,余不为"0",即为该余数数值,向下往上取数。
十进制数为:168 转换 十进制数为:250
在这里插入图片描述

十进制转换十六进制

十进制转八进制采用的是除十六取余。余为"0",即为0,余不为"0",即为该余数数值,向下往上取数。
十进制数为:168 转换 十进制数为:A8

在这里插入图片描述

十六进制

计算机中的十六进制是一种计数系统,是一种逢16进1的进位制。通常用数字0到9和字母(A至F)或(a至f)表示,其中A~F表示十进制的10~15。在计算机科学中,十六进制常用于表示二进制数、字节等信息,因为它可以更简洁地表示数据。

二进制与十六进制关系表

二进制十进制十六进制
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F

二进制转换十六进制

从后向前四个为一组,二进制与十六进制表,对照
在这里插入图片描述

十六进制转换二进制

十六进制数为:27B 转换二进制数为:1001111011
也是同理。最前面的"0"可以抹去。
在这里插入图片描述

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

这两者之间的转换可以借助十进制或者二进制完成,可以先将八进制转换成十进制或二进制,再转换成十六进制。通过间接转换来实现。


总结

对计算机内的基本计数,二进制、八进制、十进制、十六进制、以及进制之间的相互转换的学习。

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是一个比较大的项目,需要具备一定的C语言编程经验才能完成。下面是一个简单的报告,介绍如何设计一个C语言日历。 1. 项目概述 我们的任务是设计一个日历程序,能够显示当前日期和时间,还能够显示指定日期的日历。用户可以通过键盘输入来选择他们想要查看的日期。 2. 设计思路 我们的设计思路如下: - 第一步,获取当前日期和时间; - 第二步,接受用户输入,判断用户想要查看的日期; - 第三步,根据用户输入,计算并显示日历。 3. 编程实现 以下是我们的C语言代码。我们采用了time.h头文件中的函数来获取当前时间和日期。用户输入是通过scanf函数实现的。 ```c #include <stdio.h> #include <time.h> int main() { int year, month, day; int days[] = {31,28,31,30,31,30,31,31,30,31,30,31}; int week, i, j, k; time_t t; struct tm *lt; // 获取当前时间和日期 time(&t); lt = localtime(&t); year = lt->tm_year + 1900; month = lt->tm_mon + 1; day = lt->tm_mday; week = lt->tm_wday; printf("当前日期:%d-%d-%d\n\n", year, month, day); // 接受用户输入 printf("请输入要查看的日期(格式为YYYY-MM-DD):"); scanf("%d-%d-%d", &year, &month, &day); // 计算并显示日历 printf("\n日 一 二 三 四 五 六\n"); for (i = 0; i < week; i++) { printf(" "); } for (j = 1; j <= days[month - 1]; j++) { printf("%2d ", j); week++; if (week == 7) { week = 0; printf("\n"); } } return 0; } ``` 4. 结论 我们成功地设计了一个C语言日历程序,能够显示当前日期和时间,还能够显示指定日期的日历。这个程序可以作为一个基础框架,继续扩展为一个更为完整的日历程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bit_Simona

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

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

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

打赏作者

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

抵扣说明:

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

余额充值