重新学习位运算
来源:互联网 发布:海绵软件 编辑:程序博客网 时间:2024/06/06 01:12
java中不存在无符号左移
最高位代表符号位,0代表正数,1代表负数
位运算符主要针对两个二进制数的位进行逻辑运算,计算机存储的都是补码, 参与运算的也是补码但是正数的补码跟原码反码是一样的,对于负数来说原码所代表的才是真值
8位的(-11)-1011的原码为10001011最高位为符号位
反码为:除符号位外源码取反11110100
补码为源码除符号位外取反加1:11110101
补码变原码 除符号位外取反加1
反码变源码除符号位所有位取反
反码加1变补码
比如-11+1就是11110101+00000001=10001010最高位为1,结果为负数,转换为原码就是10001010(10)
-11+12就是11110101+10001100=00000001最高位为0,结果为正数表示1
当给定一个数时,我们需要求大于它而且最接近他的2的n次方所代表的数
public int change(int num){ i=num; i--;//避免传过来的数为$2^n$ //1+2+4+8+16=31 i|=i>>>1; i|=i>>>2; i|=i>>>4; i|i=>>>8; i|=i>>>16; return i;}
阅读全文
0 0
- 重新学习位运算
- 位运算学习笔记
- 转贴:位运算学习
- 位运算 学习
- Java位运算学习
- 位运算学习
- 位运算 学习
- 位运算学习
- 算法学习--位运算
- java学习-位运算
- 学习笔记---位运算
- 位运算学习
- 位运算学习笔记
- 位运算符学习笔记
- JAVA学习笔记-位运算
- 位运算符学习一
- JAVA学习(4)位运算
- 位运算学习(一)
- shell的编程结构体
- Oracle 11g的Deferred Segment Creation
- 正则表达式用法与介绍
- hdu3336—Count the string(kmp+dp)
- LeetCode WIith JS || 66. Plus One [数组存储的数据加一]
- 重新学习位运算
- 完美解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password YES)
- 理解高并发(18).编写自己的threadlocal
- 停止线程
- Servlet实现导出下载csv文件
- 读取注册表内容
- js模块化规范
- 一个字符替换的算法
- Thinkphp 模型->快捷查询