• 二、二进制

    二进制
    数据--->存放在内存当中 全部都是二进制形式
    数据是如何在内存只存放的

    1010 四位数字 一位二进制数字称为一个bit
    内存基本单位是字节 (Byte) 1Byte=8bit

    整数在内存中的存放方式 对二进制的操作都是基于整数二进制的

    char 存放ASCII 1个字节 8bit 8位二进制存放这个char
    int 4个字节 4*8=32位二进制存放一个int

    正数的二进制 97 不断除2求余 余数从下往上写 1100001

    97 余数
    -----------
    48 1
    24 0
    12 0
    6 0
    3 0
    1 1
    0 1

    char ch=97; --->0110 0001

    ip地址是通过unsigned char来存储的 范围0~255;

    负整数 存放方式
    最高位为符号位 1 负数
    -97
    1110 0001 (绝对值二进制01100001 最高位改成1表示负数) 原码
    1001 1110 (除去原码的最高位 其余全部0变1 1变0) 反码
    1001 1111 (反码+1) 补码 (取反加1)

    1001 1111
    0110 0001
    -------------
    10000 0000 //用补码计算 计算正确

    补码的意义 保证计算的时候 结果不会出错

    存负整数

    小数在内存中存放方式(了解)
    float 4个字节 32位 1位存符号位 8位存指数位 23位存尾数位
    double 8个字节 64位 1位符号位 11位指数位 52位尾数位

    0.147852

    整数部分和小数部分
    整数部分 0 ---->二进制 0
    小数部分

    0.147852 乘2 取整数部分
    --------
    0.295704 0
    0.591408 0
    1.182816 1
    0.365632 0
    0.731464 1
    1.462528 1
    ........可以继续乘....

    0.001011(1*2^-3+1*2^-5+1*2^6) 二进制形式的小数

    把小数点移动到第一个1的邮编 变成指数形式
    1.001 小数点右移三位 左移(正数)

    移动之后 小数点右边的数字称为尾数
    存-3 指数
    对于float 指数 直接加127 然后在算二进制就行

    124 0111 1100
    0 0111 1100 001 0000 0000 0000 0000 0000

    对二进制的操作都是基于整数二进制的

    八进制 满八进一 0~7
    十六进制 满十六进一 0~9 A~F(可以小写) 表示16进制数字



    x=20;//10进制20
    x=0130;//前面家还是那个一个0位八进制
    x=0xa12f;//前面加0x表示16进制整数

    进制转换

    10进制和8进制以及10进制和16进制相互转换 10--->8进制 %o 1234--->4*8^0+3*8^1+3*8^1+2*8^2+1*8^3 10--->16进制 %x 1234--->4*16^0+3*16^1+3*16^1+2*16^2+1*16^3 8--->10进制 1234---->除八求余 8--->16进制 1234---->除十六求余 2--->16进制 0011 1100--->3A 2--->8进制 00 111 010--->072 32位 就能表示 2^32个数字 分一半给负数 -2^31~-1 另一半给整数 0~2^31-1

    相关文章
    相关标签/搜索
    246天天好彩蓝月亮精选