`
nwsuafer
  • 浏览: 12948 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

<< 只有对数值右端的5位才有用 这样可以防止我们移位超过int类型所具有的位数

 
阅读更多

转自:http://bbs.csdn.net/topics/190065386


-->移位操作符操作的运算对象是二进制的“位”,int类型是32位也就是2的5次幂!如果移32位以上,那么原来的数的信息会全部丢失,这样也就没有什么意义了!所以上面的“只有右侧的5个低位才会有用”说的是:移位操作符右端的那个数(化成二进制)的低5位才有用,即

X<<y;
是指y的低5位才有用,即不能大于32。而对于long型也是同样的道理!

因此,如果对一个int型,进行移位,X<<y;当y小于32时,移位后的结果一般都在我们的预料当中;而如果y大于32时,由于移位超出了int所能表示的范围,这时就先把y化成二进制数,然后取该二进制数右端的低5位,再把这5位化成十进制,此时的这个十进制就是要对X移动的位数。

例如:intinta=140;
a<<34

System.out.println(Integer.toBinaryString(a<<b));

上面那两个语句的执行过程是:先把a化成二进制数:10001100

执行语句a<<34对a左移32位时,先把34化成二进制:100010,对该二进制数取右边5位,即00010,化成十进制数为2,所以实际上是对a左移两位。现在,地球人都会知道上面程序的输出结果是:1000110000
分享到:
评论

相关推荐

    位运算 位运算符和位运算位运算举例位段PPT课件.pptx

    位运算在计算机科学中扮演着重要的角色,它们允许我们在位级别进行操作,具有类似低级语言的功能。位运算符主要有六种:按位与(&),按位或(|),按位异或(^),按位取反(~),左移(&lt;&lt;)和右移(&gt;&gt;). 1. **按位与(&)**: ...

    c代码-编写一个函数 rightrot(x, n),该函数返回将 x 循环右移(即从最右端 移出的位将从最左端移入)n(二进制)位后所得到的值。

    通过这样的函数,我们可以方便地对整数进行循环右移操作,这对于理解和编写涉及位操作的算法,如哈希函数、密码学应用等都是十分有用的。在实际开发中,这样的功能可能会用于数据编码、位操作优化等场景。

    C程序设计:第15章位运算(了解).ppt

    - **按位与(&)**: 对每个位执行逻辑与操作,只有当两个位都为1时,结果位才为1。 - **按位或(|)**: 对每个位执行逻辑或操作,只要有一个位为1,结果位就为1。 - **按位异或(^)**: 对每个位执行异或操作,相同为0...

    ID10位卡号转8位考号方法

    ### ID10位卡号转8位考号方法 在许多应用场景中,如教育机构、考试管理系统等场景下,为了方便管理和数据处理,通常需要将较长的标识符(例如ID卡号)转换为较短的形式(例如考号)。本文将详细介绍如何通过编程...

    access基本函数大全【经典】.docx

    - `Right(&lt;字符表达式&gt;, &lt;数值表达式&gt;)`:从字符串右端截取指定长度的字符。 - `Left(&lt;字符表达式&gt;, &lt;数值表达式&gt;)`:从字符串左端截取指定长度的字符。 - `Mid(&lt;字符表达式&gt;, &lt;数值表达式1&gt;[, &lt;数值表达式2&gt;])`...

    数值求解常微分方程,数值求解常微分方程初值问题,matlab

    总的来说,掌握Runge-Kutta法是数值分析和科学计算的基础技能,通过MATLAB进行实践,不仅可以加深对理论的理解,也有助于提升编程能力。通过阅读和运行提供的程序,学习者可以直观地了解这些方法的工作机制,并将其...

    LabVIEW的格式与

    格式与精度选项卡用于对数值对象改变格式与精度。  格式:数值对象的格式,如表1所示。 表1数值对象格式  位数和精度类型:精度类型包括“精度位数”或“有效数字”。如果精度类型设置为精度位数,那么位数...

    数值分析上机题_数值分析_

    数值分析是计算机科学和工程领域中的一个重要分支,它主要研究如何用数值方法解决数学问题,尤其是在实际计算中遇到的不精确或不可解的问题。在给定的压缩包文件中,包含的上机作业和编程题目涉及到数值分析的一些...

    高等数值分析计算实践报告

    综上所述,该报告通过一系列精心设计的实验,深入分析了不同类型的矩阵(特别是特征值分布差异较大的矩阵)对数值计算方法(如CG法、Lanczos法和MINRES法)的影响。通过这些实验,我们可以更好地理解这些方法在实际...

    第5章_位运算(c语言程序设计).ppt

    【位运算】是C语言中的一个重要特性,它允许程序员直接操作数据的二进制位,因此在编写系统软件和底层程序时尤其有用。本章详细介绍了C语言中的位运算符和它们的应用。 位运算符包括: 1. **按位与(&)**:两个参与...

    数值积分_积分_数值积分_

    数值积分是计算科学和数值分析领域的一个重要主题,它涉及到如何用计算机近似求解数学中的积分问题。在实际应用中,我们往往无法得到解析解,或者解析解过于复杂难以处理,这时候就需要借助数值积分的方法。本实验...

    《C++面向对象程序设计》谭浩强版复习总结.pdf

    4. inline函数:inline &lt;函数值类型&gt; &lt;函数名&gt;(&lt;参数表&gt;) { &lt;函数体&gt; } 四、面向对象基本概念 1. 类定义:class &lt;类名&gt; { &lt;访问控制符&gt;: &lt;成员函数的声明&gt; &lt;访问控制符&gt;: &lt;数据成员的声明&gt; }; 2. 成员函数的实现:...

    【微分方程数值解】两点边值问题数值算例(附python代码)

    "微分方程数值解两点边值问题数值算例(附python代码)" 微分方程数值解是数学和计算机科学中的一种重要方法,用于解决微分方程问题。在这篇文章中,我们将讨论两点边值问题的数值解,包括问题的描述、求解思路、...

    数值计算PPT--数值实验八:常微分方程数值解法的应用实训(Ma.pdf

    数值计算PPT--数值实验八:常微分方程数值解法的应用实训(Ma.pdf) 本文档为数值计算PPT教案,旨在让学生了解常微分方程初值问题的数值解概念,掌握解常微分方程初值问题的Euler方法及改进的Euler方法和Runge-...

    数值线性代数(徐树方)

    ### 数值线性代数(徐树方) #### 知识点概览 1. **下三角矩阵的逆矩阵计算** 2. **上三角矩阵及其逆矩阵的计算** 3. **Gauss变换矩阵的性质及应用** 4. **三角分解(LU分解)的唯一性** 5. **对称矩阵与Gauss消去...

    蓝点被必做的算法经典题java.c/c++

    - **目标**: 输入一个不超过5位的正整数,求其位数并将数字逆序输出。 - **程序分析**: - 判断位数可以通过除以10的幂次来进行。 - 逆序输出可以使用取模和整除操作逐步获取每一位数字。 - 创建一个新的变量用于...

Global site tag (gtag.js) - Google Analytics