位运算中你不知道的高深之处!
来源:互联网 发布:封神演义知乎 编辑:程序博客网 时间:2024/05/08 19:46
位运算之左移
深入了解之前先来了解一下位运算的左移与异或的基本概念
*左移运算符 -----将操作数的二进制码整体左移指定位数,左移后右边空出来的位以 0 填充,符号 << .
举例说明一: 5 << 2
5的二进制码:
左移2位后的二进制码:
空出来的位用 0 补齐
所以,5 << 2 的运算结果就为 1 * 24+ 0* 23 + 1 * 22 + 0 * 21 + 0*20= 20
举例说明二: -5 << 2
-5的二进制码:
左移2位后的二进制码:
所以,-5 << 2的运算结果就是 -20
根据上面的举例,应该会发现:
5 << 2 可以看成是 5 * 22= 20 所以说5向左移2位就是5乘以2的2次方,那么向左移2位就是5乘以2的3次方
看到这里,我想大家都对位运算的左移运算都有了一定的了解,那么问题就来了:
问题一:如何最有效的计算出3 * 8 的值.
通常的解法的话,就是声明两个变量m和n ,一个赋予 3 ,一个赋予 8 ,然后在输出 m * n.
或者是直接输出 3 * 8 。当然这两个方法是可行的,但题目所说的最有效的方法。大家都知道,计算机底层都是用二进制做的运算,那么用二进制直接做运算就是一种最有效的方法,看到这里是不是会有所感悟了呢?
那现在就揭晓最后的答案,下面给出一段代码一看便知
这种方法的优点:计算效率较高,直接通过二进制做运算
缺点:1、要运算的的两个数,必须有一个是2的平方倍
2、很难想到,所以造成可读性较低
0 0
- 位运算中你不知道的高深之处!
- 你所不知道的“位运算及运算过程”
- 你所不知道的按位运算
- 高深的正则你知道多少??
- 你不知道的位操作之整数取余
- 『你不知道的位运算,原来还可以这么用』
- 你不知道的js(中)之基本类型
- Java移位运算,你可能不知道的运算
- 你不知道的秘密之新疆奥特悬浮门是怎样稳坐甄嬛之位!
- 你肯定不知道的科技界九位同性恋领袖
- 你所不知道的JAVA浮点数运算
- C++中你不知道的语法
- C++中你不知道的语法
- C++中你不知道的语法
- 《你不知道的JavaScript 中卷》
- 你不知道的javascript (中)
- 你不知道的javascript-中卷
- JAVA中你不知道的事儿之System.out.println()
- 移动web相关学习(一)——WebView的学习(1)
- shell中的大括号,小括号语法分别概述
- 联诚发(LCF)同深圳足球俱乐部建立战略合作伙伴关系
- apue2e unp安装
- PHP 反射机制详解 以及插件架构实现
- 位运算中你不知道的高深之处!
- SAT考试数学题型与难度解析
- SCJP认证考试题集
- Python2环境下Sublime Text 3在下载 Package Control
- Android 地图-animateCamera() 方法不正确工作
- Android应用实例之有道辞典(WebView)
- ActiveMQ讯息传送机制以及ACK机制详解
- Lambda表达式了解
- Xcode7 使用NSURLSession发送HTTP请求报错