学习算法介绍


介绍

今天是学习算法的第一天,有很多人说进大厂才需要学这个,但是我觉得这个也算一个技术加强的点吧,找工作时候笔试也会考这个,而且在工作中用算法的效率会高,而且自身对这个也有点感兴趣,所以就打算学这个。现在先介绍一个自己学习算法的思路等等。

  1. 我个人觉得学习算法不说一天俩天就能学会的,不像大学期末考试那样学个几天就能应付考试,而是像高中做数学,物理那样掌握原理,然后慢慢做题,在做题过程中更加了解原理,所以我打算以几个月时间来学习它
  2. 每次学完原理,并可以通过自己讲出来的时候,然后就去刷题网站上进行练习,让自己更加巩固,在做题的过程中培养自己的逻辑思维能力
  3. 要勤写代码,从代码中找到乐趣,并且能够坚持下去
  4. 对于复习,我觉得要做到一定题量再进行整体复习,而不是频繁复习

下面是今天学习的内容:

二进制和位运算

位的概念

计算机存储信息的最小单位。
计算机所能识别的就是用二进制表示的数字

正数用二进制表示

二进制只能用0和1来表示。逢二进一。就跟十进制的逢十进一原理相同。下面用四位二进制来举例:(其他位补0即可)
比如0:用二进制表示为0000 1:0001
2:0010 其中最后一位是2的0次方,倒数第一位是2的一次方,…

负数用二进制表示

整数的最高位(第一位)是0;而负数的最高位是1
首先先用二进制表示出负数的绝对值,然后先再二进制的基础上-1;然后对其取反就是负数的二进制
微信图片_20240409204456.jpg
已知负数二进制求其负数:先对二进制取反,然后+1,得到的为负数的绝对值,然后添加负号即可

常见的位运算

&:位运算与 有0为0,全1为1
|:位运算或 有1为1,全0为0
^:异或 相同为0,不同为1(这里也可以不用记这8个字,直接进行计算,就是再计算过程中不要向前一位进位即可)
~:取非,就是将二进制0变成1,1变成0
<<:不分有符号无符号,右边补0
对于非负数来说左移n相当于乘以2的n次方
>>:带符号右移,就是看符号位是0还是1,0的话就补0,1的话补1
对于非负数来说右移n相当于除以2的n次方
>>>:不带符号右移,高位都补0
注意:&&和||,逻辑与和逻辑或,相比较与位运算与,位运算或具有短路效果

打印二进制的函数

 public static void getBinary(int num){
        for (int i = 31; i >= 0; i--) {
            System.out.print((num & (1 << i)) == 0 ? "0" : "1");
        }
        System.out.println();
    }

相反数

a的相反数 = (~a) + 1;
最小负数相反数还是它自身

为什么这样设置二进制(负数)

让其加法逻辑还是原来的那套逻辑,没有条件转移,在负数与任何数做加法时结果依然正确

溢出

自己确保自己的调用所得到的结果不会溢出,一定是自己确保的,计算机不会给你做检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Zeal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值