JAVA从入门到精通(7)-- 进制基础

一、十进制和二进制的由来

十进制是中国的基础系统。“逢十进一”

进位制是人为计数和运算方便而约束的计数系统。

二进制:“逢二进一”

二、进制转换

十进制:10个数,0-9,十进一

二进制:2个数,0、1,二进一

位权:一个数码在不同的位置上所代表的值不同

例如:       10进制 -    83296

10进制:  8                3                  2                 9               6

 2 进制:    1000         0011            0010          1001         0110

    十进制转换为二进制:采用短除2,直到除不开,得到余数,从下往上数即得到十进制对应的二进制。

    二进制转换为十进制:采用权位乘以2,相加的和即为二进制对应的十进制。

三、位运算

二进制的位运算:

1》&    与运算           例如:6&3=2

2》|      或运算    例如:6|3=7

3》^     异或运算    例如:6^3=5

4》~    反码     例如:~6=-7

5》<<  左移     例如:3<<2=12   即3*2*2=12

6》>>  右移             例如:3>>1 = 1    即3/2=1

7》>>>无符号右移   例如:3>>>1 = 1    即3/2=1

我们分别讲解每一个操作:

1》按位与 &
规则:两位全为1,结果才为1

例如:51&5 即0011 0011 & 0000 0101 ,因此51&5 = 1

特殊用法:

1》清零 。如果想将一个单元清零,即使其全部二进制为0,只要与一个各位都为零的数值相与,结果为零
2》取一个数中指定位。找一个数,对应X要取的位,该数的对应位为1,其余位为0,此数与X进行“与运算”可以得到X中的指定位
2》按位或 |

规则:只要有一个为1,结果就为1

特殊用途:

1》常用来对一个数据的某些位置1。找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1

3》异或运算^

规则:两个相应位为“异”(值不同),则该位结果为1,否则为0

特殊用途:

1》使特定位翻转。找一个数,对应X要翻转的各位,该数的对应位为1,其余位为0,此数与X对应位异或即可

2》与0相异或,保留原值

  利用2》的方法,可以实现:两个变量交换值

1.借助第三个变量来实现

C=A ; A=B ; B=C ;

2.利用加减法实现两个变量的交换

A=A+B ; B=A-B ; A=A-B

3.用位异或运算来实现,也是效率最高

原理:利用一个数异或本身等于0和异或运算符合交换律

如:A=A^B ; B=A^B ;A=A^B

4》取反运算 ~

规则:对一个二进制数按位取反,即将0变1,1变0

5》左移运算  <<

规则:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2

6》右移运算 >>

规则:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

  操作数每右移一位,相当于该数除以2

7》无符号右移运算 >>>

规则:各个位向右移指定的位数。右移后左边空出的位用0来填充。移出右边的位被丢弃。

8》负数以其正值的补码形式表示

原码:一个整数按照绝对值大小转换成的二进制数称为原码。

反码:将二进制数按位取反,所得的新二进制数称为原二进制的反码。

补码:反码加1称为补码

四、Java内置的进制转换

1》十进制转为其他进制

转为二进制:Integer.toBinaryString(112);

转为十六进制:Integer.toHexString(112);

转为进制:Integer.toOctalString(112);

2》其他进制转为十进制

二进制转为十进制:Integer.parseInt("111001",2);

八进制转为十进制:Integer.parseInt("27",8);

十六进制转为十进制:Integer.parseInt("A8",16);

五、Java中的进制

1》Java中的数据类型

1》int数据类型:byte(8bit ,-128~127)、short(16bit)、int(32bit)、long(64bit)

2》float数据类型:单精度(32bit float)、双精度(64bit double)

3》boolean类型变量的取值有:true、false

4》char数据类型有:unicode字符,16位

2》对应的类类型

Integer、Float、Boolean、Character、Double、Short、Byte、Long

3》数据类型转化字节

小端法(Little-Endian)

低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端

大端法(Big-Endian)

高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端

4》字符串转化为字节

String s;

byte[ ]   bs  = s.getBytes();

 字节数组如何转化为字符串

Byte[ ]   bs = new byte[int];

String s = new  String(bs);

或:String  s = new  String(bs,encode);//encode指编码方式


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值