zoukankan      html  css  js  c++  java
  • C语言二进制(基础篇十二)

    ......

      位(bit

        在计算机内部,开关导通时,表示1;断开表示0。这样,电压不稳时计算机还能照样工作。

        一个通断开关叫做一个“位”。

      字节(byte

        计算机内部经常把8个位作为一组,用来表示许多我们平时生活中用到的东西。如:

          00000000表示事物为假,11111111表示为真(非0即为真)

          00000000表示数字0,00000011表示3

          8个位可以表示不同的组合情况,比如音乐音符,颜色,这样就实现了多媒体。

          全世界统一把8个位叫做一个“字节”,我们平时所说的硬盘容量、内存大小、U盘大小,都是以字节为单位。网络却经常使用位为单位,所以我们平时的上网速度要除以8(加上衰耗,实际上要除以10),才是下载速度。

      二进制与整数

        人类平时使用的数字都是逢十进一,叫十进制。在计算机中是逢二进一,叫二进制。

        二进制表示成八进制和十六进制更加方便。八进制是逢八进一,用0到7表示。十六进制是逢十六进一,大于9的数字用字母A到F表示。

        用八进制和十六进制表示二进制的原因是:3个位刚好是八进制的一位数,4个位刚好是十六进制的一位数。黑客和病毒工作者就经常工作在十六进制数上。

    十进制二进制八进制十六进制
    0 0 0 0
    1 1 1 1
    2 10 2 2
    3 11 3 3
    4 100 4 4
    5 101 5 5
    6 110 6 6
    7 111 7 7
    8 1000 10 8
    9 1001 11 9
    10 1010 12 A
    11 1011 13 B
    12 1100 14 C
    13 1101 15 D
    14 1110 16 E
    15 1111 17 F
    16 10000 20 10
    17 10001 21 11
    18 10010 22 12
    19 10011 23 13

      

        注:标黑体字的为关键数,关键数后面的数字,可从此关键数开始推导

        ※1个八进制位刚好是3个二进制位

        ※1个十六进制位刚好是4个二进制位。

        ※1个字节刚好是2个十六进制位

        如:11111111刚好是FF

      C语言中的八进制和十六进制

        程序1

          输入和输出十、八、十六进制

    //12-1,输出十六进制,八进制
    #include <stdio.h>
    
    main() 
    {
        int i8, i10, i16;  //八进制,十进制,十六进制
        i8 = 015;     //八进制的形式赋值
        i10 = 15;      //十进制的形式赋值
        i16 = 0x15;   //十六进制的形式赋值
    
    
        printf("i8的输出形式%o,十进制为%d,十六进制为%x\n", i8, i8, i8);
        printf("i10的输出形式%o,十进制为%d,十六进制为%x\n", i10, i10, i10);
        printf("i16的输出形式%o,十进制为%d,十六进制为%x\n", i16, i16, i16);
    
    }

      

        从程序中可以看出:

          ※整数前加个0,表示8进制常量,如:063

          ※整数前加个0x,表示16进制常量,如:0x3F

        注意:C语言中没有二进制的输入输出,用库函数itoa也只能将十进制转换成二进制,二进制转十进制没有对应的库函数。

        ※八进制和十六进制整数没有负数。

      各类型所占内存

     

    类型字节类型字节
    char 1 float 4
    short 2 double 8
    int 4 long double 8
    long 4 指针 4

        ※整型前加unsigned,所占字节数保持不变

        ※用sizeof可以计算出所有类型所占的字节数。

        浮点数据类型因为在后面调出几位用来做指数部分,计算方法较复杂,本书作为入门丛书,不对此内容深入讲解。

      进制转换

        书写格式:

          (数字)进制

        如:

          (111)2    (10)8    (FF)16

        ※十进制转二进制:用“除2取余法”

          (20)10=(?)2

        注意:要除到商为0为止

        答案:(20)10=(10100)2

        规律:以此类推,十进制转八进制可用“除8取余法”;转十六进制可用“除16取余法”

        ※二进制转十进制:用降幂法

           (10100)2= (?)10

          1*24+0*23+1*22+0*21+0*20=20

          注意:任何数的0次幂等于1

          (10100)2= (20)10

        规律:八或十六进制转十进制只要将底数改为8或16即可

        ※二进制转八进制:

          将二进制由低位到高位,3个分为1组,每组查表所得的八进制组合,就是最终结果。

          (10,100)2= (24)8

        ※二进制转十六进制:

          将二进制由低位到高位,4个分为1组,每组查表所得的十六进制组合,就是最终结果。

          (1,0100)2= (14)16

        

        ※八和十六进制互转:

          可以通过二进制作为中间进制,再转成另一个进制

        ※进制转换可以用Windows自带的计算器设置成科学型后再进行验算。

      单位关系

        数学中的单位关系

          太(T)、吉(G)、兆(M)、千(K)、字节(byte)、位(bit)  

            1T=1000G

            1G=1000M

            1M=1000K

            1K=1000byte

            1byte=8bit

       

        计算机中的单位关系:

          计算机中的单位关系都是1024,因为210=1024,便于计算机的计算,所以以上的单位关系应改为: 

            1T=1024G

            1G=1024M

            1M=1024K

            1K=1024byte

            1byte=8bit

  • 相关阅读:
    PAT乙级1008. 数组元素循环右移问题 (20)
    PAT乙级1007. 素数对猜想 (20)
    PAT乙级1006. 换个格式输出整数 (15)
    ubuntu mate 开机自动启动ssh服务
    ubuntu 修改网卡名称
    ubuntu 绑定固定ip
    ubuntu sogou 輸入法無法輸入文字,解決辦法【转载】
    select()函数小结【转载】
    listen函数小结
    python学习过程二(《python核心编程》第三章)
  • 原文地址:https://www.cnblogs.com/httpcc/p/15394279.html
Copyright © 2011-2022 走看看