菜鸟的复习(1)

一丶 计算机基础

1.1 走进0与1的世界

       计算机就是晶体管,电炉管组装起来的电子设备,无论是图形图像的渲染,网络远程共享,还是大数据计算,归根接地都是0与1的信号处理.信息储存和逻辑计算的元数据只能是0与1,他们在不同介质里的物理表现方式不同.(二进制运算自行研究).

       以电路为例,一条电路线在计算机中被称为1位,即1个bit,简写b.8个bit组成一个单位,称为一个字节,即1个Byte,简写B.1024个Byte,简写为KB;1024个KB,简写为MB;1024MB,简写为GB,这些都是计算机中常用的储存计量单位.

位移运算:

不易理解不常用,熟悉是指 "大牛" 在代码中经常使用这种方式进行行高低位的截取,哈希计算,甚至运用在乘除法运算中.

移位:移位操作符有俩种,左移位<<   和   右移位>> , 其中类似于+=这种操作符一样,也有<<= 和 >>= .

左移:例如5<<2表示5向左移动俩位   5的二进制是101  ,左移俩位之后就是10100  也就是乘以4即等于20 

对于位数左移之后,低位的补0   

例如10000......0000(即最小数),那么它左移2位之后,它的二进制表达就是00000.....0000000(即为0)  

public class Text {
    public static void main(String[] args) {
        int max = Integer.MIN_VALUE;
        System.out.println(Integer.toBinaryString(max));
        System.out.println(Integer.toBinaryString(max<<2));
    }
}

运行结果:

10000000000000000000000000000000
0

右移:  和左移不一样的地方就是:如果被位移的数是负数,那么右移之后,高位全部补1;如果是整数,那么位移之后,高位全部补0.也就是整数依然是正数,负数依然是负数.

无符号右移 :  这种位移操作与右移操作不同的地方就是:  无论是正数还是负数,在位移之后,高位都补0.即位移之后永远都是正数.

注意:

(1) 无论是左移还是右移(包括无符号右移),都有一个共同原则.如果移动的位数超过规定的bit数,都会与最大位移数取模之后进行计算      

例如 :   int型  32bit  5<<33  就是  5<<1;同理,右移和无符号右移也是一样   long类型也是一样  

(2) 对于byte和short进行位移运算的时候,他们会被转换为int型.进行右移的时候,因为精度的原因(byte和short本身比int字节少,因转换为int计算完毕,再转换回去的时候,可能对高位截断

位与,或,异或,非

与:俩个bit都位1的时候,结果为1,否则为0

或:俩个其中有一个为1即为1,否则为0

异或:相同为0,相异为1

非:0变1  , 1变0

&和&&、|和||的异同

对于boolean类型的数据,&和&&,|和||的计算结果相同。但是这里有一处区别,按位与和按位或需要操作计算两个二进制的计算结果。但是如果是逻辑或,逻辑与,会有短路效应。可能只需要根据其中一个条件就可以判断了,例如true||false只需要判断前面一个就可以了,false&&false就只需要判断前面一个就知道为false
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值