`
JiongBull
  • 浏览: 7965 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

解惑1:基数性

 
阅读更多

[声明]所有代码均来自Joshua Bloch和Neal Gafter所著的<Java解惑>一书,本人仅因学习需要摘抄和注释,感谢二位作者的知识分享.

 

代码:

 

public class Oddity {
    public static boolean isOdd(int i) {
        return i % 2 == 1;
    }

    public static void main(String[] args) {
    	int i = 4;
    	System.out.println("Question: " + i + " is odd ? ");
    	System.out.println("Answer: " + isOdd(i));
    }
}

 

 

结果:

 

Question: 4 is odd ? 
Answer: false

 

 

分析:



结果竟然说4不是偶数?


取模运算当返回值为0时说明被整除

      所以 偶数 % 2 = 0

取模运算当返回值非零时,它与左操作数具有相同的正负符号

      所以 正奇数 % 2 = 1

               负奇数 % 2 = -1

所以通过取模运算判断奇数时可以改成用 i % 2 != 0  来判断.


  现在换一种思路来思考,所有的奇数的二进制最后一位必然为1,偶数的为0.

所以我们用1和参数进行按位与运算时,参数为奇数时与运算的结果为1,参数为偶数时与运算的结果为0


例如:  4 & 1         7 & 1


0100          0111

&0001       &0001

结果:  0000(0)     0001(1)

 

解决方案代码:

 

public class Oddity {
    
    public static boolean isOdd(int i){
    	return (i & 1) == 0;
    }
    
    public static void main(String[] args) {
    	int i = 4;
    	System.out.println("Question: " + i + " is odd ? ");
    	System.out.println("Answer: " + isOdd(i));
    }
}
 

 

结果:

 

Question: 4 is odd ? 
Answer: true
 

 

 

分享到:
评论

相关推荐

    传智播客.net培训-名师解惑:.net应该学什么?怎么学?(1)

    - **微服务架构**:学习如何设计和实现微服务架构,提高系统的可维护性和扩展性。 - **云平台部署**:熟悉Azure等云平台,了解如何将.NET应用部署到云端。 - **性能优化**:学习如何通过代码优化、并发编程等手段...

    9答疑解惑:渴望、热情和选择1

    【标题】:“9答疑解惑:渴望、热情和选择1” 【描述】:“1. 客观地审视自己 2. 确定自己想要什么 3. 注重长期的可能性,而不是短期的功利 4. 尽量关注自己会得到的东西,而不是自己会失去的东西 5. 不要和大众” ...

    java 解惑.pdf

    **谜题1:奇数性** - **描述**:程序看似应该返回一个布尔值,表明一个数字是否为奇数,但结果却出乎意料。 - **解惑**:在进行模运算时,需要注意负数的情况。当输入为负数时,`%` 运算的结果可能会导致意外的行为...

    IT解惑(IT学生解惑真经、程序员羊皮卷、高质量c编程指南)

    《IT解惑》是一部综合性的资源集合,包含了《IT学生解惑真经》、《程序员羊皮卷》和《高质量C编程指南》三部分,旨在为计算机科学与技术的学习者和未来的职业程序员提供全面的指导和建议。这些文档分别关注了IT学生...

    《找事:给年青一代的就业解惑书》读书笔记.pdf

    "《找事:给年青一代的就业解惑书》读书笔记" 本书《找事:给年青一代的就业解惑书》是著名经济学家何帆教授的新作,该书旨在指导年轻人找到自己的职业道路,而不仅仅是找到一份工作。书中探讨了当前就业市场的变化...

    20210603-广发证券-机械“解惑”系列之十五:制造业投资周期性如何演绎?.pdf

    20210603-广发证券-机械“解惑”系列之十五:制造业投资周期性如何演绎?.pdf

    SQL解惑解惑

    第一范式(1NF)要求每个字段都不可再分,第二范式(2NF)要求消除部分依赖,第三范式(3NF)则进一步要求消除传递依赖。更高阶的范式如BCNF(Boyce-Codd范式)和4NF、5NF等,适用于更复杂的数据关系。 最后,SQL的...

    Java解惑 中文版

    《Java解惑中文版》是一本专为Java程序员设计的指南,旨在帮助读者解决在编程过程中遇到的各种问题,提升程序的健壮性。本书深入浅出地探讨了Java语言的核心概念、常见疑惑以及最佳实践,旨在使开发者能够编写出更...

    java 解惑 java 解惑 java 解惑

    java 解惑 java 解惑 java 解惑 java 解惑 java 解惑 java 解惑

    Java解惑(中文版)_java_java解惑_solve65p_

    1. **基础语法**:了解Java的基本数据类型(如整型、浮点型、字符型、布尔型),变量声明,常量定义,运算符,流程控制(如if语句、switch语句、循环结构),以及函数的使用。 2. **类与对象**:理解类作为对象的...

    C语言解惑.

    1. **基本数据类型**:C语言有几种基本的数据类型,如int、char、float和double等,它们分别代表整型、字符型、浮点型和双精度浮点型。理解每种类型的存储大小和用途是至关重要的。 2. **变量与常量**:变量是存储...

    java解惑java解惑java解惑

    1. **Java基础** - **变量与数据类型**:Java支持基本数据类型(如int、double等)和引用类型(如类、接口和数组)。理解它们的区别对于正确使用变量至关重要。 - **控制流**:包括if条件语句、for、while循环以及...

    Java解惑 PPT1

    **谜题1:奇数判断** 在Java中,判断一个整数是否为奇数,通常我们会使用`i % 2 == 1`。然而,`i % 2 != 0`或`(i & 1) != 0`也是可行的,后者甚至可能提供更好的性能。这里的关键是,使用`%`运算符时要考虑操作数的...

    新手解惑:详解零欧姆电阻的十二种作用

    我们经常在电路中见到0欧的电阻,对于新手来说,往往会很迷惑:既然是0欧的电阻,那就是导线,为何要装上它呢?还有这样的电阻市场上有卖吗?其实0欧的电阻还是蛮有用的。文章就为大家介绍了零欧姆电阻的十二种作用。

    c语言解惑.pdf

    6. 预处理器指令:学会使用宏定义、条件编译指令等预处理器特性,来提高代码的可维护性和可配置性。 7. 文件操作:掌握C语言中的文件输入输出操作,了解如何读写文件。 8. 动态内存管理:理解内存分配函数如malloc...

    城投解惑系列之五:计划外“再融资债”,有何变化?-20201229-广发证券-14页.pdf

    城投解惑系列之五:计划外“再融资债”,有何变化?-20201229-广发证券-14页.pdf

Global site tag (gtag.js) - Google Analytics