原码反码补码&循环&递归复习
来源:互联网 发布:大学室友不好知乎 编辑:程序博客网 时间:2024/06/10 23:07
一.原码反码补码
1.正数反码,补码是本身
- 例:int a = 10; //0000 0000 0000 0000 0000 0000 0000 1010
2.负数反码和原码,补码的关系
- 例:int b = -10;
//1000 0000 0000 0000 0000 0000 0000 1010 原码
//1111 1111 1111 1111 1111 1111 1111 0101 反码
反码 → 补码:+1
//1111 1111 1111 1111 1111 1111 1111 0110 补码
3.位运算符 & | ^ ~ 运算的是补码
例:int result1 = a & b; // a = 10 b = -10
&按位与:都为1结果为1,否则为0
//0000 0000 0000 0000 0000 0000 0000 1010 10补码
//1111 1111 1111 1111 1111 1111 1111 0110 -10 补码
//result1
//0000 0000 0000 0000 0000 0000 0000 0010 补码
运算后补码符号位(第一位)为0,则补码为原码
System.out.println(result1);
输出结果为:2
例:int result2 = c & b; // c = -7 b = -10
//1000 0000 0000 0000 0000 0000 0000 0111 原码
//1111 1111 1111 1111 1111 1111 1111 1000 反码
//1111 1111 1111 1111 1111 1111 1111 1001 -7(c)补码
//1000 0000 0000 0000 0000 0000 0000 1010
//1111 1111 1111 1111 1111 1111 1111 0101
//1111 1111 1111 1111 1111 1111 1111 0110 -10(b)补码
//result2
//1111 1111 1111 1111 1111 1111 1111 0000补码
补码 → 反码:-1
//1111 1111 1111 1111 1111 1111 1110 1111反码
//1000 0000 0000 0000 0000 0000 0001 0000原码
System.out.println(result2)
输出结果为:-16| 按位或:有1结果为1,否则为0
^ 按位抑或:相同结果为1,不同为0
~ 取反
二.循环
循环三要素:1.循环变量赋初值 2.循环条件合理 3.循环变量要改变
1.While & Do-while
- while 语句格式:while (bool表达式) {循环体;}
Do-while 语句格式:do {循环体} while (bool表达式);
两者区别:Do-while总是保证循环会被至少执行一次。
2.For循环
for循环语句是支持迭代的一种通用结构,是最有效最灵活的循环结构
语法形式:for (初始表达式 ①; 布尔表达式 ②; 更新表达式③) {循环体④}
循环顺序:① ②④③ ②④③ ②④③ …
例:打印空心菱形◇public class Test{ public static void main(String[] args){ for(int i = 1;i <= 13;i++){ for(int j = 1;j <= 13;j++){ if(i + j == 8 || i + 6 == j || i - 6 == j || i + j == 20){ System.out.print("*"); }else{ System.out.print(" "); } } System.out.println(); } }}
三.递归
递归的基本思想:自己调用自己
递归结构包括两个部分:
1.定义递归头。解答:什么时候不调用自身方法。(如果没有头,将陷入死循环)
2.递归体。解答:什么时候需要调用自身方法。例1:斐波拉契数列(1 1 2 3 5 8 13…)
public int getFnum(int n) { if (n == 1 || n == 2) { return 1; } else { return getFnum(n - 1) + getFnum(n - 2); } }
- 例2:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一
半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
public class Monkey { public static void main(String[] args) { int day = 10; System.out.println(myMonkey(day)); } public static int myMonkey(int day){ if(day == 1){ return 1; }else{ return (myMonkey(day - 1) + 1) * 2; } } }
- 原码反码补码&循环&递归复习
- 复习一下原码,反码,补码
- 原码,反码和补码(复习)
- 关于原码, 反码, 补码的复习
- 原码补码反码——复习
- 原码、反码、补码
- 原码-反码-补码
- 原码、反码、补码
- 原码、反码、补码
- 原码,反码,补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码补码反码
- 原码、反码、补码
- ByteBuffer的心得
- <context:component-scan base-package="" />
- java-算法导论-插入排序
- setTimeout和setImmediate以及process.nextTick的区别
- java 操作Redis key 命令 实例(Jedis) (一)
- 原码反码补码&循环&递归复习
- python语言学习——关于全局
- POJ 1860 换汇币 (BellmanFord)
- 小白学Java Web 11 Http协议1(http请求)
- Hadoop HA的搭建
- javaday03_基本语法_条件体,循环体
- Chris and Magic Square
- bash基础功能之多命令顺序执行与管道符
- 码云使用Tortoise git SSH的形式提交代码