java基础

Java基本类型

类型

描述

Byte

表示-128~127之间的整形数值,在内存中占据一个字节(8位二进制位)

Short

表示-32768~32768之间的整形数值,在内在中占据2个字节(16位二进制位)

Int

在内在中占据4个字节(32位二进制位)

Long

在内在中占据8个字节(64位二进制位)

Char

在内存中每个字符占16,所有字符都用Unicode编码存储

 

按位操作:

java中有4个可用来位操作的位运算符:

符号

说明

&

,111,100,000

|

,111,101,000

^

异或

~

,对每个二进制位的内容求反,10,01.

 

移位操作:

符号

说明

<< 

左移动,右侧填充0

>> 

右移动,左侧扩充符号位

>>> 

右移动,左侧填充0

 

按位对整数变量操作的另一种技巧是移动,向右移动二进制数字相当于除以2的幂次方,向左移动二进制数字相当于乘以2的幂次方.

例如:

数值3:它是0011,向左移动一位就相当于乘以2,二进制变为0110,也就是6.向右移动一位就是相当于除了2,二进制变为0001,

 

移位运算符

    包括:
    “>> 右移”;“<< 左移”;“>>> 无符号右移”

例子:
-5>>3=-1
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1111 1111
其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。

-5<<3=-40
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1101 1000
其结果与 -5*2*2*2 完全相同。

5>>3=0
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0000
其结果与 5/(2*2*2) 完全相同。

5<<3=40
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0010 1000
其结果与 5*2*2*2 完全相同。

-5>>>3=536870911     
1111 1111 1111 1111 1111 1111 1111 1011
0001 1111 1111 1111 1111 1111 1111 1111

无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
一个有趣的现象是,把 1 左移 31 位再右移 31 位,其结果为 -1。
0000 0000 0000 0000 0000 0000 0000 0001
1000 0000 0000 0000 0000 0000 0000 0000
1111 1111 1111 1111 1111 1111 1111 1111

 

 

//int转byte例子

String hex = Integer.toHexString( i & 0xFF);

 

 int 的長度是 4Bytes, & 是 and 運算子,就是將
每個位元拿來進行 and 運算,根據 and 運算的規則
只有兩者皆為 true (1) 的結果才為 1

假設這個 i 是 12345 => 0x3039 (Hex)

i & 0xFF

0x3039=>0011000000111001(Bin)
0xFF  =>0000000011111111
____________________________
結果:0000000000111001

由於前面的 bits 都是 0 ,所以實際上有用的只有後面的 8 bits

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值