java二进制数_JAVA-二进制基础

一、二进制的概念

计算机进制有:二进制、八进制、十六进制

进制的基本特点是:每一位置上的数字必须在0-(进制-1)的范围内,也就是说二进制只能有0、1;八进制为:0-7;十六进制比较特殊为:0-9,A(10) B(11) C(12) D(13) E(14) F(15)

进制转换:

1、非十进制转换十进制:每位数字乘以进制数的权重次方,将所有位置上的结果进行求和即可。

进制的权重:一个数值,在每一位都有一个权重,权重为从右向左数,位数-1

进行转化: 举例:将二进制011转10进制为:从右向左,1*2的0次方+1*2的1一次方+0*2的2次方=3; 将八进制34转化成10进制:4*8的0次方+3*8的1次方=28

2、十进制转非十进制: 采用短除法: 用十进制数除以要转化的进制数,用本次除法的商继续进行除以要转化的进制数的除法运算,一直到商为0,保留每次除法的余数,将余数按照从后往前进行排序,即为最终转化后的数。

举例:将10进制100转化成八进制数: 十进制 100: 100/8(进制数) 商:12 余数 4 继续用上次的商12除以8:12/8 商:1 余数 4 继续用上次的商1除以8:1/8 商:0 余数 1 商为0,停止运算,将余数从后往前排序:144 得到最终转化后的八进制为144。 十进制转十六进制同理

二、位运算

优点:

(1)特定情况下,计算方便,速度快,被支持面广

(2)如果用算数方法,速度慢,逻辑复杂

0ef454738d7a35407b3c723c030cb00c.png

2.1、按位与&

两位全为一,结果才为1

0&0=0;0&1=0;1&0=0;1&1=1;

用法:

(1)清零,如果想要将一个单元清零,即使其全部二进制位0,只要与一个各位都为零的数值相与,结果位零

(2)取一个数中指定位,找一个数,对应X要取的位,该数的对应位为1,其余为零,此数与X进行“与运算”可以得到X中的指定位

2.2、按位或|

只要有一个为1,结果就为1

0|0=0;1|0=1;0|1=1;1|1=1;

用法:常用来对一个数据的某些位置设为1,找到一个数,对应X要设置为1的位,该数的对应位为1,其余位为零,此数与X想与可使X中某些位设置为1

2.3、异或运算^

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

0^0=0;0^1=1;1^0=1;1^1=0;

用法:

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

(2)与0相异或,保留原值

两个变量交换值

(1)借助第三个变量来实现

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

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

(3)异或运算

任意一个变量X与其自身进行异或运算,结果为0

A=A^B;B=A^B;A=A^B

2.4、取反运算~

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

~1=0;~0=1;

2.5、左移运算<<

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

2<<1=4

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

2.6、右移运算>>

将一个数的二进制位全部右移若干位。正数左补0,负数左补1,右边丢弃。 每右移1位,相当于除以2.

左补0还是1得看被移数是正还是负

2.7、无符号右移运算>>>

各位向右移动指定位数。右移后的左边空出位用0补。右边的位被丢弃。 与>>的不同。 >>>不管正数负数。左边只会补0; >>正数补0,负数补1

2.8、示例

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

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

补码:反码加1称为补码

3cf41225a544553e31a2286fdfef35d5.png

三、JDK内置的进制转换

c35b44ad3a0838d247208e2e0a4bc83e.png

a428177cf69ae4b02b1d6d56aea45270.png

四、JAVA中的进制

JAVA中二进制用的多吗?平时开发中“进制转换”和“位操作”用的不多,Java处理的是高层;在跨平台中用的较多,如:文件读写,数据通信(客户机(java)——0.1进制——服务器(C))。

基本类型:int型数据类型:byte(8bit -128~127)1 short(16bit)2 int(32bit)4 long(64bit)8字节float数据类型:单精度(32bit float)4字节 双精度(64bit double)boolean类型变量的取值:true false 1bitchar数据类型:Unicode字符,16位 2字节对应的类类型:Byte Short Integer Long Float Double Boolean Character

数据类型转换字节:1.大小端:

小端法:低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端大端法:高位字节排放在内存的低地址端即该位置的起始地址,低位字节排放在内存的高地址端2.字符串->字节数组:String s ; byte [] bs = s.getBytes();字节数组->字符串:byte[] bs = new byte[int]; String s = new String(bs); 或String s = new String(bs,encode); //encode指编码方式:gb2312, utf8

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值