算法技巧/基础汇总

1. 原码、反码、补码 

所有数字在计算机底层都以二进制形式存在,计算机以补码的形式保存/计算所有的整数:

  • 正数的原码、反码、补码都相同,就是正数的二进制数
  • 负数的补码 = 反码 + 1

原码:直接将一个数值换成二进制数,最高位是符号位

反码(负数):排除符号位,对原码按位取反

补码(负数):排除符号位,对反码加1

补码 ==> 原码:对于正数,则三码合一; 对于负数:则补码取反加1

Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。

补充: 为什么计算机采用补码而不是原码或反码?_强哥叨逼叨的博客-优快云博客_计算机用原码还是补码

2. 进制转换

二进制:基数为2,由 0、1 组成

八进制:基数为8,由 0 - 7 组成

十进制:基数为10,由 0 - 9 组成

十六进制。基数为16,由 0 - 9、A、B、C、D、E、F 组成

二进制 <==> 八进制:3位二进制数表示1位八进制数

二进制 <==> 十进制:按权求和

二进制 <==>十六进制:4位二进制数表示1位十六进制数

3. 位运算

位运算是针对二进制的运算!!

a<<b

左移:将二进制形式的a逐位左移b位,最低位空出的b位补0

a>>b

带符号右移:将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位。

即:被移位的二进制最高位是0,右移后空缺位补0;最高位1,右移后空缺位补1

a>>>b

无符号右移:将二进制形式的a逐位右移b位,最高位空出的b位补0

a&b

与运算:只有1&1时结果是1,否则是0

a|b

或运算:只有0|0时结果是0,否则是1

a^b

异或运算:相同二进制位进行 ^ 运算,结果是0,即:1^1=0 , 0^0=0

不相同二进制位 ^ 运算结果是1,即:1^0=1 , 0^1=1

~a

取反运算二进制数补码,各位取反

左移:

 右移:

取反:

ps:计算/存储使用的是补码,返回结果是原码!!

4. 位运算技巧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值