4、常量和进制转换

ops/2024/11/29 9:49:44/

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/ops/137619.html

相关文章

快手守城之战

科技新知 原创作者丨樱木 编辑丨蕨影 双11过后&#xff0c;大厂来到了交卷时刻。三季度虽然是传统的淡季&#xff0c;但在电商重新洗牌、短视频流量见顶的关键之年&#xff0c;此刻的平淡则显得异常扎眼。 从业务类型来看&#xff0c;略显保守的快手似乎成了资本狙击的对象&a…

5G基础学习笔记

功能软件化 刚性网络&#xff1a;固定连接、固定功能、固化信令交互 柔性网络&#xff1a;网元拆解成服务模块&#xff0c;基于API接口调用 服务化架构&#xff08;SBA&#xff09; Service based Architecture &#xff08;SBA&#xff09;: 借鉴了业界成熟的SOA、微服务架…

蓝桥杯备赛笔记(一)

这里的笔记是关于蓝桥杯关键知识点的记录&#xff0c;有别于基础语法&#xff0c;很多内容只要求会用就行&#xff0c;无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout&#xff1a; 1.3 string以下是字符串的一些简介&#xff1a;字符串…

HNU信息安全数学基础实验二

一、实验内容 编程实现&#xff1a;模重复平方法&#xff08;非伪码&#xff09;。 二、实验目标 1. 理解模重复平方方法的算法原理及其应用场景。 2. 编写代码实现该算法&#xff0c;并能够正确处理大数幂次运算中的模运算。 3. 通过实验验证算法的正确性和效率&#xff…

stm32 振动传感器实现检测震动 灯亮2s 设置标志位

标志位的作用就是传递事件的发生信息。中断处理程序只负责响应外部事件&#xff0c;然后通过设置标志位来让主程序来处理实际的逻辑。 在中断服务例程&#xff08;ISR&#xff09;中&#xff0c;应该避免做任何复杂的操作或延时&#xff0c;因为中断服务程序执行时会中断主程序…

《手写Spring渐进式源码实践》实践笔记(第十九章 实现事务管理@Transactional注解)

第十九章 事务管理 背景 事务 事务&#xff08;Transaction&#xff09;是一个不可分割的工作单位&#xff0c;它由一组有限的数据库操作序列组成。在计算机术语中&#xff0c;事务是指访问并可能更新数据库中各种数据项的一个程序执行单元。事务是为了保证数据库的一致性而…

史陶比尔机器人维修-接口总结

史陶比尔机器人的通讯接口在机器人与外部设备的数据交互、远程监控与控制等方面发挥着举足轻重的作用。这一接口&#xff0c;作为机器人控制系统与外界沟通的桥梁&#xff0c;不仅承载着数据传输的重任&#xff0c;还涉及到程序的更新维护、错误诊断修复等一系列关键功能&#…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验二----网络分析(超超超详细!!!)

相信实验一大家已经完成了&#xff0c;对Arcgis已进一步熟悉了&#xff0c;现在开启第二个实验 ArcMap实验--网络分析 目录 ArcMap实验--网络分析 1.1 网络分析介绍 1.2 实验内容及目的 1.2.1 实验内容 1.2.2 实验目的 2.2 实验方案 2.3 实验流程 2.3.1 实验准备 2.3.2 空间校正…