文件操作----二进制基础

进制转换

二进制基础

8进制:标志的开头用0表示(这是数字0)
16进制:标志的开头用0x表示(这是数字0加字母x)

十进制转换为x进制的方法:
十进制短除x,将余数从下往上写出则为转换后的x进制数
———二进制的位运算———

符号说明例子
&:与运算:两位全为1,结果才为16&3=2
|或运算:只要有一个为1,结果就为16|3=7
^异或运算:两个相应位为“”(值不同),则该位结果为1,否则为06^3=5
~反码:对一个二进制数按位取反,即将0变1,1变0~6=-7
<<左移:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)3<<2=12 等价于3*2*2=12
>>右移3>>1=1 3/2=1
>>>无符号右移:各个位向右移指定的位数。右移后左边空出的位用0来填充。移出右边的位被丢弃3>>>1=1 3/2=1

二进制优点:
特定情况下,计算方便,速度快,支持面广
如果用算数方法,速度慢,逻辑复杂

与运算的特殊用法
1、清零:如果想将一个单元清0,即使其全部二进制位为0,只要与一个各位都为0的数值相与,结果为0。
2、取一个数中 指定位
设x=1010 1110 取x低四位用
x(1010 1110)
& 0000 1111
= 0000 1110
对应指定位位为1(其余位为0)与X数进行“与运算”可以得到X中的指定位。
或运算的特殊用法
常用来对一个数据的某些位置1
x的低四位置1
x(1010 1110)
| 0000 1111
= 1010 1111
找到一个数,对应X要置1的位,该数的对应位为1,其余位为0。此数与X相或可使X中的某些位置1

异或运算^
0011 0011
^ 0000 0101
= 0011 0110
异或运算的特殊用途
1、使特定位翻转:找一个数,对应X要翻转的各位,该数的对应位为1,其余为0,此数与X对应位异或即可。
x(1010 1110)
^ 0000 1111低四位翻转
= 1010 0001

2、与0相异或,保留原值
x(1010 1110)
^ 0000 0000保留原值
= 1010 1110

两个变量交换值的方法
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
实现步骤:

A=A^B;
B=A^B=(A^B)^B=A^(B^B)=A^0=A;
A=A^B=(A^B)^A=(A^A)^B=0^B=B;

左移运算<<:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2
-14(11110010)<<2=(11001000)不符合
11(1011)<<2=44 符合
(1011)是省略形式,Java中整形是32位的(00000000 00000000 00000000 1011)(32bit)

右移运算>>:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2。
4>>2=1
-14(11110010)>>2=-4(11111100)

无符号右移运算>>>
各个位向右移指定的位数。右移后左边空出的位用0来填充。移出右边的位被丢弃
-14>>>2
即-14(11111111 11111111 11111111 11110010)>>>2
=(00111111 11111111 11111111 11111100)
=1073741820

负数以其正值的补码形式表示
原码:一个整数按照绝对值大小转换成二进制数称为原码
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码
A:00000000 00000000 00000000 00001110 是14的原码
B:11111111 11111111 11111111 11110001 14的反码形式
A(14)与B(-14)互为反码

补码:反码加1称为补码
(14的反码)11111111 11111111 11111111 11110001+1=11111111 11111111 11111111 11110010(补码)即-14

-14(11111111 11111111 11111111 11110010)<<2
=(11111111 11111111 11111111 11001000)
=?
分析:只需要该补码的原码对应的正值然后取相反数
【前面位先不管,只管后8位】
1、补码减1得到反码:(11000111)
2、补码取反得到原码(该负数的正值)(00111000)(前24位为0,此处省略)
3、计算正值(正值为56)
4、取相反数:结果为-56

JDK内置的类型转换

内置类型转换

数据类型转换成字节
数据类型转换成字节

大小端
小端法(LIttle-Endian)
低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址
大端法(Big-Endian)【与小端法相反】
高位字节排放在内存的底地址端即该值的起始地址,低位字节排放在内存的高地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值