二进制:只有0和1组成的一组数成为二进制数,计算机中的数据都是以二进制形式进行存储的。


    通常一个二进制数最高位是1,那么对应的十进制数为负数,如果最高位是0,那么对应的数是正数


    


八进制:一个二进制数表示成八进制数,将该二进制数从右到左每三位一组,每一组算出对应的十进制数,


    每组对应的十进制数连起来就是八进制表现形式。八进制表现形式最高是7


    


十进制:常用的数都是十进制数。



十六进制:0-9,a-f或A-F的表现形式,a-f表示的是10-15


    一个数表现为十六进制,将该数的二进制表现形式从右到左每四位分一组,每一组计算出对应的十进制数,


    如果该组计算出的十进制数大于9,则要用对应的字母表示,然后将每组算出的结果连起来便是该数的十六进制表现形式。



十进制转换成二进制:将一个数连续除以2得到的余数连起来就是该十进制数的二进制表现形式。



二进制转换成十进制:从右到左每位数乘以2的n次幂,第一位乘以2的0次幂,第二位乘以2的1次幂,,,


    以此类推,最后将所有的结果相加得到的结果就是该二进制数对应的十进制数。




& :与运算、有假则假,可参与位运算


    

true & true = true; 

     true & false = false; 

     false & true = false; 

     false & false = false;


| :或运算、有真则真,可参与位运算


true | true = true; 

     true | false = true; 

     false | true = true; 

     false | false = false;



^ :异或运算、两边相同结果为假,两边不同结果为真,可参与位运算

true ^ true = false; 

     true ^ false = true; 

     false ^ true = true; 

     false ^ false = false;



    


&&:与、&&和&的区别:


    &&:两个表达式中,当左边的表达式结果为false时,右边的表达式不会执行


    & :两个表达式都会执行



||:或、|和||的区别


    ||:两个表达式中,当左边的表达式结果为true时,左边的表达式不会执行


    | :两个表达式都会执行



! :非、取反



~ :反码、将一个十进制数的二进制表现形式进行取反,1变0,0变1



位运算:


    位移运算是最快的运算方式,其运算方式是将该数的2进制表现形式进行位移。


    


    左移:<< 左移位数越大,结果越大,


        左移的运算:一个数左移多少位,就是该数乘以2的该位数次幂


    


    右移:>> 右移位数越大,结果越小


        右移的运算:一个数右移多少位就是该数除以2的该位数次幂


        


    无符号右移: >>>


        将一个2进制数右移后,其最高位缺失,需要补位,右移运算时缺失的位取决于原2进制数的最高位


        若原2进制数的最高位是0,则用0来补齐缺失的位,若原2进制数的最高位是1,则用1来进行补齐


        而无符号右移则无视原2进制数的最高位是0还是1,都用0来补齐


      

java 16进制协议包 CRC校验_进制



如何计算出一个负数的二进制表现的十进制值?


    将该负数的二进制减去一再取反得出一个正数的二进制表现形式,该正数的十进制相反数就是该负数的二进制表示的十进制值