C语言二进制(基础篇十二)

摘要:
将二进制表示为八进制和十六进制更方便。四位正好是十六进制的一位:从这个关键数字可以推断,※一个八进制位正好是三个二进制位※一个十六进制位正好四个二进制位,11111111正好是FF C中的八进制和十六进制程序1,用于输入和输出十进制、八进制和16进制//12-1。表示十六进制常量:库函数itoa只能将十进制转换为二进制:二进制到十进制转换没有对应的库函数。

......

  位(bit

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

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

  字节(byte

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

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

      00000000表示数字0,00000011表示3

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

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

  二进制与整数

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

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

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

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010
17100012111
18100102212
19100112313

  

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

    ※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也只能将十进制转换成二进制,二进制转十进制没有对应的库函数。

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

  各类型所占内存

 

类型字节类型字节
char1float4
short2double8
int4long double8
long4指针4

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

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

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

  进制转换

    书写格式:

      (数字)进制

    如:

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

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

      (20)10=(?)2

C语言二进制(基础篇十二)第1张

    注意:要除到商为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

免责声明:文章转载自《C语言二进制(基础篇十二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇QT phonon在windows下的编译( 转)Python爬虫利器二之Beautiful Soup的用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NIO:Buffer 详解

如你所见,在NIO中,数据的读写操作始终是与缓冲区相关联的。Channel将数据读入缓冲区,然后我们又从缓冲区访问数据。写数据时,首先将要发送的数据按顺序填入缓冲区。基本上,缓冲区只是一个列表,它的所有元素都是基本数据类型(通常为字节型)。缓冲区是定长的,它不像一些类那样可以扩展容量(例如,List,StringBuffer等)。注意,ByteBuffe...

视频监控存储空间大小与传输带宽计算方法

在视频监控系统中,对存储空间容量的大小需求是与画面质量的高低、及视频线路等都有很大关系。下面对视频存储空间大小与传输带宽的之间的计算方法做以介绍。 视频监控存储空间大小与传输带宽计算方法 比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送的数据越大。比特率表示经过编码(压缩)后的音、视频数据每秒钟需要...

java中表示二进制、八进制、十进制、十六进制

1.进制   进制是一种记数方式 ,可以用有限的数字符号代表所有的数值。由特定的数值组成。 2.进制的表现形式     二进制: 由0和1两个数字组成。  八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。  十进制: 都是以0-9这九个数字组成,不能以0开头。   十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都...

c#FileStream文件读写

//C#文件流写文件,默认追加FileMode.Append             string msg = "okffffffffffffffff";            byte[] myByte = System.Text.Encoding.UTF8.GetBytes(msg);            using (FileStream fsWr...

[C]x字符转义序列

概述       x转义的定义是这样的 转义符 字符值 输出结果 xh[h...] 具有此十六进制码的字符 输出此字符 问题      看似x后面可以接受1或n个十六进制的字符,但是如果你把一个超过ff分十六进制数赋值给一个char变量,会得到一个"Out of range"的提示; #include <stdio.h> #incl...

C语言中位域(bit fields)的可移植问题

 网上有文章说C语言的“位域”(bit fields)有可移植性的问题,原因是不同的编译器对位域的实现不同。   我决定用实验验证一下。   一、 实验过程:   1. 准备实验程序   这 是谭浩强C语言课本上第12章12.2节的位域示例程序:   main() {   struct bs   {   unsigned a:1;  ...