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

 

posted @ 2021-10-12 09:39  httpcc  阅读(1595)  评论(0编辑  收藏  举报