4、常量和进制转换

embedded/2024/11/29 7:36:04/

1、常量

1.1、常量

常量是在程序运行中值不能内改变(常数)。

        整型:12  55  

        实型:21.5

        字符型常量:  ‘A’

1.2、常量不同进制表示

        常量数据在计算机中除了用 十进制 表示,还可以用 二进制、八进制、十六进制表示。        

        十进制数据:每一位上的数字0 ~ 9   没有前缀  默认数据表示形式

        二进制数据:每一位上的数字0 ~ 1, 前缀0b  0B    0b01100001

        八进制:了解   每一位上0 ~ 7       前缀0     0141

        十六进制:数值表示或者地址  每一位上的 0 ~ 9 a b c d e f    前缀0x  0X       0x61

       

        举例:

                int a = 0141;

                int b = 0x61;

                int c = 0b01100001;

                printf("%d %d %d\n",a,b,c);  // %d是十进制的格式控制符  其他进制可以转成十进制

1.3、进制格式控制符

        short      int           long            long  long

        十进制格式控制符      %hd      %d            %ld             %lld

        八进制的格式控制符    %ho      %o            %lo             %llo

        十六进制的格式控制符  %hx      %x            %lx             %llx

        二进制没有格式控制符

        %#x --- 显示前缀

        例子:

        int a = 97;

        printf("%#d %#o %#x",a,a,a);

        不同进制之间有一定的转换关系        

1.4、进制之间的转换规则        

        a、十进制转其他进制

        b、其他进制转十进制

        c、十进制快速转二进制

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

        

        a、十进制转其他进制   97 --> 0x61  0141  0b01100001

                除以 进制数 得到余数 ,直到商为0,将余数逆序排列

                

        

        b、其他进制转十进制

                相应位上的数字*权重,相加

                先了解权重

                        十进制权重:     3       4           5       6

                                                 1000    100    10      1

                                                 10^3    10^2   10^1  10^0

                        八进制权重:    0 1    4    1

                                                  8^2  8^1  8^0

  

                     十六进制权重:  0x     6         1

                                                      16^1   16^0

   

                        二进制权重:    0b0   1    1    0    0     0     0    1

                                                  2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0  

                规则:

                        相应位上的数字*权重,相加

                        0141  = 1*8^2 + 4*8^1 + 1*8^0 = 64+32+1 == 97

                例题:实现下面数据进制之间的转换

                        计算 255的二进制 八进制 16进制     0b11111111   0377   0xff

                        计算0x101的十进制   257

                        计算0171的十进制    121

                        计算0b10110001的十进制   177

           

        c、十进制快速转二进制

                加法:靠近小的权重, > 小的权重

                31  --- 32 16 8  4  2 1

                                √  √   √  √ √

                               1  1  1  1 1

   

                51 --- 64 32 16 8  4  2 1

                                √  √          √ √

                               1  1  0  0  1 1

  

                减法:数值比较靠近大的权重, < 大的权重

                31  --- 32 16 8  4  2 1

                           1  0  0  0  0   0

                            0  1  1  1  1  1

                278:

                        512 256 128 64 32 16 8  4  2 1

                                  √                    √      √  √

                                  1    0   0  0     1  0  1  1 0

                500:

                        512 256 128 64 32 16 8  4  2 1

                            0   1    1     1  1    1  1  1  1 1 --- 511

                            0   1    1     1  1    1  0  1  0 0 --- 500

                常用的0~16必须会

                        0 --- 0000

                        1 --- 0001

                        2 --- 0010

                        3 --- 0011

                        4 --- 0100

                        5 --- 0101

                        6 --- 0110

                        7 --- 0111

                        8 --- 1000

                        9 --- 1001

                        10 --- 1010

                        11 --- 1011

                        12 --- 1100

                        13 --- 1101

                        14 --- 1110

                        15 --- 1111

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

                3位二进制 == 1位八进制   (4 2 1)

                4位二进制 == 1位十六进制  (8 4 2 1)

                十六进制和二进制转换

                0xaf6  ===  0b101011110110

                0b0000100101001010 == 0x094a

                八进制和二进制进行转换

                0345  ===  0b011100101

                0b000 000 100 101 001 010  === 0004512


http://www.ppmy.cn/embedded/141397.html

相关文章

身份证 OCR 识别 API 接口的应用场景

在过去&#xff0c;各单位在办理业务时&#xff0c;需要人工来填写身份证等证照内容&#xff0c;这种方式不仅耗时费力&#xff0c;还容易出现差错&#xff0c;从而影响业务办理的效率和准确性。 随着近年来移动互联网的迅速发展&#xff0c;网络安全和信息安全的重要性也日益…

Axure农业农村数据可视化大屏模板分享

在当今信息技术飞速发展的时代&#xff0c;数据可视化已成为各行各业提升管理效率、优化决策过程的重要手段。Axure作为一款强大的原型设计工具&#xff0c;凭借其高度的自定义能力和丰富的交互设计功能&#xff0c;在农业农村数据可视化领域展现出强大的潜力。本文将详细介绍A…

【云原生系列】迁移云上需要考虑哪些问题

云计算已经成为现代企业架构中不可或缺的一部分。越来越多的公司正在将他们的应用、数据和基础设施迁移到云平台上&#xff0c;以便更好地应对快速变化的市场需求、提高运营效率并降低成本。然而&#xff0c;迁移到云端并不是一件轻松的事情。涉及到多个技术、业务和管理层面的…

c++(斗罗大陆)

这次&#xff0c;作者编了斗罗大陆的武魂、魂力等级&#xff0c;目前只写到了11级 #include<iostream> #include<conio.h> #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<time.h> #include<strin…

模板方法模式 (Template Method Pattern)

文章目录 模板方法模式 (Template Method Pattern)原理优点缺点示例代码场景描述1. 定义抽象类2. 创建具体类3. 客户端代码输出结果 UML 类图钩子方法使用场景优化与扩展小结 模板方法模式 (Template Method Pattern) 模板方法模式是一种 行为型设计模式&#xff0c;它定义了一…

蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)

下将以括号序列、组合数问题超级吧难的题为例子讲解动态规划 别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! ! &#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 动态规划 一、数字三角形 【问题描述】 上图给出了…

物联网实验室建设方案

一、物联网实验室建设 (1) 基础理论教学云平台 唯众基础理论教学云平台是一个专为物联网相关专业教学打造的综合性在线教学平台。该平台凭借先进的技术架构和丰富的教学资源&#xff0c;为师生提供了一个高效、便捷、互动的学习环境。以下是该平台的主要特点和功能描述&#…

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论&#xff0c;感谢大家支持&#xff01; 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…