1.int类型:32位二进制。
Java使用 补 码 来 表 示 二 进 制 数 ,在补 码 表 示 中 ,最高 位 为 符号 位 ,正数 的 符 号 位 为 0,负数 为 1。
补 码 的 规 定 如 下 :
对 正 数 来 说 ,最高位为 0,其余 各 位 代 表 数 值 本 身 (以二 进制 表 示 ),如 +42的补码 为 00101010。
对 负 数 而 言 ,把该 数 绝 对 值 的 补 码 按 位 取 反 ,然后 对 整 个数 加 1,即得该数的补码
位运算符中 ,除 ~ 以 外 ,其余 均 为 二 元 运 算 符 。 操 作 数 只 能 为 整 型 和字 符 型 数 据 。
位运算符
&:按位与。
规则:只有两个操作数对应位同为1时,结果为1,其余全为0. (或者是只要有一个操作数为0,结果就为0)。
|:按位或。
规则:只有两个操作数对应位同为0时,结果为0,其余全为1.(或者是只要有一个操作数为1,结果就为1)。
~:按位非。
规则:这个很简单只有一个操作数 ,1取反为0,0取反为1 。
^:按位异或。
规则:0异或任何位数,原数不变,1异或任何位数,任何位数取反。
异或运算:相同为0,不同为1。
同或运算:相同为1,不同为0.
无进位相加。
<<:左位移运算符。
规则:左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)
>>:右位移运算符。
规则: 有符号右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。 有符号右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
>>>:无符号右移运算符。
规则:java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。
~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。
排序算法
1.选择排序法
public static void selectSort(int[] arr){if (arr == null || arr.length < 2) {return;}for (int i = 0; i < arr.length; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {swap(arr,i,j);}}}}
2.冒泡排序法
public static void bubbleSort(int[]arr){if (arr == null || arr.length < 2) {return;}for (int i = 0; i < arr.length-1; i++) {for (int j = 0; j < arr.length-1; j++) {if (arr[j] > arr[j + 1]) {swap(arr, j, j + 1);}}}}
3.插入排序法
public static void insertSort(int[]arr){if (arr == null || arr.length < 2) {return;}for (int i = 1; i < arr.length; i++) {for (int j = i - 1; j >= 0; j--) {if (arr[j] > arr[j + 1]) {swap(arr, j, j + 1);}}}}
阶乘和
public static long f2(int n){long ans = 0;long curr = 1;for (int i = 1; i <= n; i++) {curr *= i;ans += curr;}return ans;}
随机数
1.从1-5随机到1-7随机
//此函数只能用,不能修改// 等概率返回1~5public static int f() {return (int) (Math.random() * 5) + 1;}//等概率得到0 和 1public static int a() {int ans = 0;do {ans = f();} while (ans == 3);return ans < 3 ? 0 : 1;}//等概率返回0 - 6public static int b() {int ans = 0;do {ans = (a() << 2) + (a() << 1) + a();} while (ans == 7);return ans;}//等概率返回 1-7public static int c(){return b() + 1;}
2.从a-b随机到c-d随机
3.01不等概率随机到01等概率随机
// 你只能知道,x会以固定概率返回0和1,但是x的内容,你看不到!public static int fx(){return Math.random() < 0.8 ? 0: 1;}// 等概率返回0和1public static int fy() {int ans = 0;do {ans = fx();} while (ans == fx());return ans;}
