信息的表示

信息的表示&处理

信息存储

    c/c++允许多种实现方式、java则有精确的数据格式&编码(良好的可移植性)

        java只支持有符号整数,并且以补码实现

        >>为算数右移 >>>为逻辑右移

    从机器的角度来看,程序仅仅是字节序列

    位运算^交换两个变量的值:不需要第三个变量

    &&、||的短路特性

    移位实际会先取模

整数

    计算机执行的整数运算实际上是一种模运算

    -TMin = TMin

    UMax = 2TMax+1

    usigned 做for循环索引

         sizeof( )返回无符号

    截断n位 视为取模2^n

    补码复数右移n位,并不向0舍入,需要先加n个1

    ❓counting down with unsigned

    网络中大端传输,机器基本都是小端,需要在接口做转换(socket)

    ### 一些漏洞

        int转size_t

        malloc时使用乘法但没检查溢出

浮点数

    指数偏置值编码 相比补码更好比较

    相同指数域的部分 在数轴上均匀分布

    随着指数域+1,分布间距*2

    🤔向偶数舍入

        4舍6入5取偶

        统计原理,保证向上与向下取整概率1:1,总体最接近实际结果

        小数点后n位,向1/2^n 舍入

    浮点加法不可结合

    类型转换时会改变位的表示 单精度、双精度...

        整型与无符号整型就不会

posted @ 2021-12-13 22:28  紫羊  阅读(18)  评论(0)    收藏  举报