算法:位运算
�十进制:逢十进一,生活中常见的数字。
二进制:逢二进一,计算机系统使用的数制,只有0、1。
八进制:逢八进一,采用0,1,2,3,4,5,6,7八个数字。在编程语言中通常以数字0开头表示八进制数
十六进制:逢十六进一,采用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 十六个数字。A-F表示 10-15,在编程语言中常用0x开头表示。
-
按位或 "|"
3 0011 10 1010 = 11 1011
-
按位与 "&"
3 0011 10 1010 = 2 0010 -
判断奇偶
(0111)
(0110)
可见 偶数末位都是0,奇数末位都是1。当 13&1=0001=1。便为奇数,反之=0000,便为偶数
6
-
-
按位异或 "^"
3 0011 10 1010 = 9 1001 -
按位取反 "~"
即 将内存中的补码按位取反,包括符号位。
补码计算法定义:非负数的补码是其原码本身;负数的补码是其绝对值的原码最高位符号位不变,其它位取反,再加1。
-
例如正数:9
二进制: 0 1001
补码: 0 1001
按位取反: 1 0110 (符号位一起进行取反,补码的取反)
减1得反码: 1 0101
转原码。 1 1010 (反码取反就是原码)
=-10
-
例如负数:-9
- 二进制:1 1001
- 反码: 1 0110 (符号位不变,取反)
- 补码: 1 0111 (符号位不变,末位+1)
- 补码取反: 0 1000 (符号位一起取反)
- 转原码。 正数的补码,反码,原码都是一样的。
- =10
所有正整数的按位取反都是其本身+1的负数。 ~8=-9
所有负整数的按位取反都是其本身+1的绝对值。 ~-8=9
0的按位取反是-1。0不是正负数哦
-
位移(左/右移)">> <<"
9>>1 右移1 0000 1001 0000 0100 = 4 9<<1 左移1 0000 1001 0001 0010 = 18