美文网首页
C语言入门开发-进制

C语言入门开发-进制

作者: 孙国庆 | 来源:发表于2015-04-19 11:17 被阅读99次

    进制

    1:二进制

    [十进制]0 1 2 3 4 5 6 7 8 9 (逢十进一)

    [二进制]0 1 (逢二进一)

    0+0=0

    0+1=1

    1+1= 10

    为什么要采用二进制?机械容易读取

    0 和1 代表两种状态(开和关)

    数据存储在内存:

    内存抽象:开关,想象成无数个开关组成的,8个开关放到一个房子里,称为字节,想象成无数个房子组成的,内存可以就是摩天大厦

    内存量级:bit等量转换单位

    8bit====1(字节)

    1024字节===1k

    1024K===1M

    1024M===1G

    1024G===1T

    二、八进制、十六进制

    [八进制]0 1 2 3 4 5 6 7 (逢8进1)

    1+7=10

    2+7=1+7+1=10+1=11

    [十六进制]01 2 3 4 5 6 7 8 9 a b c d e f (逢16进1)

    1+f=10

    都有一定的可度性,并且可以和二进制转换(比较容易)

    三、进制转换

    1、十进制转二进制(倒除法)

    除2取余倒着排

    67(10)===1000011

    2|67

    2|331

    2|161

    2|80

    2|40

    2|20

    2|10

    2|01

    55(10)===110111

    2|55

    2|271

    2|131

    2|61

    2|30

    2|11

    2|01

    2、二进制转十进制(当前的数字0、1城西2的当前位数次方,每一位都如此,最后相加)

    1001101

    1*2^0+0*2^1+1*2^2+1*2^3+0*2^4+0*2^5+1*2^6=

    1+1+4+8+1+1+64=

    3、八进制转二进制

    [三位一取]八进制的一位相当于二进制的三位,转换的时候按十进制来算

    55(8)===101101

    2|5

    2|21

    2|10

    2|01

    47(8)===100111

    2|42|7

    2|202|31

    2|102|11

    2|012|01

    4、十六进制转二进制

    [四位一取]十六进制的一位相当于二进制的四位,转换的时候按十进制来算

    5de6(16)===(101)(1101)(1110)(0110)

    5、二进制转八进制和十六进制

    [八进制-三位一取]

    [十六进制-四位一取]

    [从低为开始取]

    进制对应表

    十进制二进制八进制十六进制

    000

    100011

    200102

    300113

    401004

    501015

    601106

    701117

    8100010

    9100111

    练习:

    1、十进制转二进制

    12、34、678、59

    2、二进制转10进制

    100111、110011、101010

    3、八进制转二进制

    564、712

    4、十六进制转二进制

    12aef、d39a

    5、二进制转八进制和16进制

    1110110、10001001、11001001

    找到相应的原码 反码 补码

    -9

    -3

    原码、反码、补码

    [注]计算机存储数据前,先开辟空间,在存储数据

    5

    4字节

    32位

    0000 0000 0000 0000 0000 0000 0000 0000

    [原码]规定了字节个数,写明了富豪为,得到了原码

    0000 0000 0000 0000 0000 0000 0000 00011

    1000 0000 0000 0000 0000 0000 0000 0001-1

    ——————————————————————

    1000 0000 0000 0000 0000 0000 0000 0010-2

    [结论:计算机不以原码的形式存储数据]

    [反码]

    1(正数的反码是其原码)

    原码:0000 0000 0000 0000 0000 0000 0000 0001

    反码:0000 0000 0000 0000 0000 0000 0000 0001

    -1(负数的反码是原码的符号位不变,其他位取反)

    原码:1000 0000 0000 0000 0000 0000 0000 0001

    反码:1111 1111 1111 1111 1111 1111 1111 1110

    ——————————————————————

    1111 1111 1111 1111 1111 1111 1111 1111

    [结论]计算机不以反码存储数据

    [补码]

    [结论]计算机以补码的形式存储数据

    1

    原码:0000 0000 0000 0000 0000 0000 0000 0001

    反码:0000 0000 0000 0000 0000 0000 0000 0001

    补码:0000 0000 0000 0000 0000 0000 0000 0001

    (正数的原码、反码、补码是一样的)

    -1

    原码:1000 0000 0000 0000 0000 0000 0000 0001

    反码:1111 1111 1111 1111 1111 1111 1111 1110

    补码:1111 1111 1111 1111 1111 1111 1111 1111负数的补码是反码加一

    1111 1111 1111 1111 1111 1111 1111 1111

    1、把补码当作原码来看

    2、找到它的反码

    1000 0000 0000 0000 0000 0000 0000 0000符号位不变,按位取反

    3、找到它的补码

    1000 0000 0000 0000 0000 0000 0000 0001反码加一

    相关文章

      网友评论

          本文标题:C语言入门开发-进制

          本文链接:https://www.haomeiwen.com/subject/reyyfttx.html