笔记 - Java 进制和位运算

来源:互联网 发布:上海游安网络 编辑:程序博客网 时间:2024/06/05 16:38
二进制:只有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来补齐
      

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

0 0