首页 > 其他分享 >C语言入门零基础:5、进制数和进制转换

C语言入门零基础:5、进制数和进制转换

时间:2024-08-08 19:55:08浏览次数:10  
标签:10 入门 十六进制 二进制 C语言 八进制 十进制 进制

前提:

printf语句和scanf语句是源自与stdio.h这个头文件中的函数,它们的作用分别是输出和输入。

应用:

        printf("hello world\n");   //用于输出(打印)hello wolrd这个语句。

        int a;

        scanf("%d",&a);      //用于向a空间输入一个整形数据

注意:使用scanf的前提是先要定义一个变量(开一个空间)。

一、进制数和进制前缀

        1、进制数:

                C语言里面的进制数:二进制  八进制  十进制 十六进制
        
                十进制:逢10进1,每一位上的数字是0 ~ 9
                二进制:逢2进1,每一位上的数字 0 、1
                八进制:逢8进1,每一位上的数字0 ~ 7
                十六进制:逢16进1 ,每一位上数字0 ~ 9 a b c d e f

        2、进制前缀      

                在数据的前面加前缀表示不同的进制数

                二进制:0b或0B

                八进制:0

                十进制:没有前缀,C语言中默认就是十进制

                十六进制:0x或0X

二、不同进制数的输入和输出

        格式控制符:          

                                         short       int         long          long long
            十进制                  %hd       %d         %ld             %lld
            八进制:              %ho         %o       %lo             %llo
            十六进制:           %hx         %x       %lx             %llx
            
            如果要输出显示前缀可以:%#hx        %#x        %#lx          %#llx

注意:二进制没有格式控制符(无法直接输出二进制格式的数据)

三、进制转换

        1、十进制转二进制、八进制、十六进制数

                由十进制数除以要转的进制(如需转二进制,即除以2),得到的商继续除以要转的进制,直到商为0,然后每一轮的余数逆序排列。(不好理解可看图)

        

                        (实在没耐心画了,见谅见谅哈哈)。

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

 
            规律:相应位置上的数字*权重,相加

            权重:数据的每一位上都对应一个权重,以二进制举例,从低 位到高位,该位权重等于上一位权重乘以二,最低为权重为2的零次幂。
            
            10进制:    3         4       5         6
                           1000    100     10        1
                           10^3    10^2  10^1   10^0
                       
                       3*10^3 + 4*10^2 + 5 * 10^1 + 6 * 10^0 == 3456
                       
            2进制的数据:0b 1         1       0        1
                                       2^3    2^2    2^1     2^0
                            
                            1*2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 8 + 4 + 1 == 13
                            
            8进制的数据:  0 1      4        1
                                    8^2     8^1    8^0
                            
                            1*8^2+4*8^1+1*8^0 == 64 + 32 + 1 == 97
                            
            16进制的数据:0x6      1
                                    16^1  16^0

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

           
                     1位八进制== 3位二进制  (421)
                     1位十六机制 = 4位二进制 (8421)

            
                    8进制数:
                        0 ~ 7
                
                        00 ~ 000
                        01 ~ 001
                        02 ~ 010
                        03 ~ 011
                        04 ~ 100
                        05 ~ 101
                        06 ~ 110
                        07 ~ 111
             
                    16进制数:
                        0x0 ~ 0b00000000 
                        0x1 ~ 0b00000001
                        0x2 ~ 0b00000010
                        0x3 ~ 0b00000011
                        0x4 ~ 0b100
                        0x5 ~ 0b101
                        0x6 ~ 0b110
                        0x7 ~ 0b111
                        0x8 ~ 0b1000
                        0x9 ~ 0b1001
                        0xa ~ 0x1010
                        0xb ~ 0x1011
                        0xc ~ 0x1100
                        0xd ~ 0x1101
                        0xe ~ 0x1110
                        0xf ~ 0x1111

        4、十六进制数据存储和字节的关系


                     一个十六进制数据 == 4位二进制

                    1个字节存储8位二进制
            
                    1个字节可以存储两个十六进制数据

        

标签:10,入门,十六进制,二进制,C语言,八进制,十进制,进制
From: https://blog.csdn.net/nobgo/article/details/141034559

相关文章

  • c语言中输出字符指针相关问题
    原文链接:https://blog.csdn.net/littesss/article/details/71037908c语言中输出字符指针相关问题一、例如定义一个char*p="hello";的字符指针。首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对......
  • 万字长文带你深度学习AI绘画工具 Stable Diffusion 保姆级实战,AI绘画入门必看实用性教
    大家好,我是设计师阿威今天给大家分享一下AI绘画工具StableDiffusion的实战教程,非常适合新手入门和巩固以往知识体系,同时我也准备了配套的学习资料,本教程没有难懂的理论,全是实操的截图,非常通俗易懂。本教程没有难懂的理论,全是实操的截图,非常通俗易懂。认真看完这篇教程,能......
  • C语言实现猜数字小游戏
    前言与概述本文章讲述如何通过C语言开发一款猜数字的小游戏,开发这款小游戏会让你在学习编程道路上获得更多成就感和快乐。程序功能①:文字从两端向中间汇聚的欢迎界面②:输入密码登录游戏③:简约美观的游戏主界面④:深挖猜数字游戏背后运行逻辑⑤:丰富多样的程序功能⑥:无限......
  • C++进制转换
    这篇代码是我早就打出来的,当时放在百度网盘,本地放在硬盘上,后来硬盘坏了,最近清网盘的时候才想起来,所以赶紧改了改就发出来了这也是我比较早的代码了,所以记得并不清楚,改也只改了一点,当时不爱打注释,具体思路也忘得一干二净,所以直接把代码贴出来了(好像屁话有点多)Code:#include......
  • Springboot整合Flowable入门-学习笔记
    目录1、定义流程(画图)2、Springboot部署流程3、Springboot删除所有流程4、Springboot根据流程部署ID查询流程定义ID5、Springboot启动(发起)流程6、Springboot查询任务6.1全部任务6.2我的任务(代办任务)7、springboot审批任务1、审批通过2、驳回8、Springboot流程......
  • 云消息队列 RabbitMQ 版入门训练营,解锁对比开源优势与零基础实战
    消息队列面向应用提供解耦、削峰填谷、异步通知等特性,是分布式架构中不可或缺的基础服务。随着业务增长,企业对消息队列的性能和稳定性要求不断提高,同时有优化资源和运维成本的需求。云消息队列RabbitMQ版严格遵循AMQP0-9-1协议,并通过架构优化避免了消息积压导致的内存泄漏......
  • 字符旋转的结果(c语言)
    1.字符旋转的结果//写一个函数,判断一个字符是否为另一个字符串旋转之后的字符串//是返回1,不是返回02.方法一:我们可以使用字符旋转,进行一一比较。如果相等是返回1,如果不是返回0,将第一位存储起来,其他位先前相加,然后将第一位放在最后一位,进行比较,如果没有相等,那在++进行比较.......
  • 【Python】excel常用函数操作Python实现,办公入门首选
    常见的Excel函数,在Python中的如何实现:VLOOKUP:可以使用merge或map函数来实现类似的功能。IF:可以使用numpy库的where函数来实现类似的功能。SUMIF:可以使用pandas的query函数来筛选数据,然后使用sum函数来计算总和。COUNTIF:类似于SUMIF,可以使用query函数来筛选数据,然......
  • 【CSS入门】第二课 - margin外边距
    这一小节,我们说一下margin外边距。怎么理解这个外边距呢,比如小张和小丽站在一起,紧紧排着站。试想一下,如果他俩冬天都穿着羽绒服和夏天穿着短袖,是不是占据的空间会不一样呢。那么回到HTML网页开发商来说,如果两个元素,他们加一些外边距,占的空间也会不一样,而且会使两个元素的距离也......
  • 【C语言】一篇文章搞定C语言最难指针
    目录一、内存和地址(1)什么是内存的地址(2)如何寻找指定的内存地址(3)CPU和内存传递数据的方式二、指针变量和地址(1)取地址操作符(2)指针变量(3)解引用操作符(4)指针变量的大小(5)指针变量的类型的意义 ①指针的解引用②指针+/-整数③void*指针三、const修饰指针(1)cons......