怎样判断一个数是否为偶数

2023-09-20 17:34:32

要求代码行数尽可能少;

package main

import (
 "fmt"
 "strconv"
)

func main(){

 fmt.Printf("传入的值是否为奇数:%t\n",Judge_is_even(7))


}

func Judge_is_even(num int) bool {

 //fmt.Println(num % 2)
 rs, _ := strconv.ParseBool(strconv.Itoa(num % 2))
 return rs

}

num % 2,值为0时即无余数,为偶数;值为1时即余1,为奇数;

Go中泛int型无法直接转换为bool类型,需要先转成string..再由string转为bool




要求性能尽可能高:

考虑本质,用位运算.

一个整数,无论占1个Byte还是2个或4个,即无论能表征2的8次方多的整数,亦或是2的16次方或2的32次方多,但在二进制转十进制中,其最后一个坑位都是X*2的0次方即X(X为0或1),而其上面几位为0或1乘以2的1-n次方,必为偶数,故而最后一位X为0或1,即决定了整个整数的奇偶:如果为0,最后一位值为0*2的0次方=0*1=0,为偶数;如果为1,则为1*1=1,为奇数;

"计算机中的数字通常用二进制补码表示——

如果为正数,补码与原码相同,直接看最后一位(因为数字1的前面N位均为0,跟它做与运算,前面肯定为0),奇数为1,偶数为0,与1相与,结果不变。

如果为负数,补码转原码:保持符号位不动,其它各位取反+1,即为负数的绝对值原码全部取反+1。还是看最后1位,先取反,再+1,结果还是和原来相同。进行与运算时还是原来的末位,所以用跟1做与运算还是保持原来的结果。"

奇数的二进制数的最后一位永远是 1,与 1 按位且只会得到 1,偶数相反。

package main

import (
 "fmt"
 "strconv"
)

func main() {

 fmt.Printf("传入的值是否为奇数:%t\n", Judge_is_even(81))

}

func Judge_is_even(num int) bool {
 
 rs, _ := strconv.ParseBool(strconv.Itoa(num & 1))
 return rs

}

可参考[1]

参考资料

[1]

可参考: https://learnku.com/articles/10153/odd-even-number-judgment-by-bit-operation

本文由 mdnice 多平台发布

更多推荐

华为OD机试 - 矩形相交的面积 - 逻辑分析(Java 2023 B卷 100分)

目录专栏导读一、题目描述二、输入描述三、输出描述1、输入:2、输出:3、说明四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明华为OD机试2023B卷题库疯狂收录中,刷题点这里专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的

高并发压力测试,你真的会做吗?

一、Introduction对于小微企业网站在自主推出某些活动时,可能导致网站产生高并发访问的情况。针对这种情况采用临时租用云服务器是有性价比的应对措施,比如,使用弹性云。这种租用服务有的按照访问流量计费。为了计算出大概的预算,需要根据推算的访问量做并发压力测试。二、压力测试方法一般,使用apache自带的ab.exe

【Java】泛型

简单泛型促成泛型出现的最主要的动机之一是为了创建集合类,我们先看一个只能持有单个对象的类。这个类可以明确指定其持有的对象的类型://generics/Holder1.javaclassAutomobile{}publicclassHolder1{privateAutomobilea;publicHolder1(Auto

解决文件只能在windows系统上传成功,而linux系统上传失败。

场景:在我们项目准备上线进行SIT测试的时候,测试在文件上传的时候,一直上传不成功,表示当前文件不支持上传,然后我们让测试将他的文件发送给我们进行测试,我们是能够上传成功的,然后询问他们使用的什么系统,发现他们使用的是Linux发行版操作系统Ubuntu。分析原因:可能是由于Linux和Windows操作系统在处理文件

ES6之Map和Set有什么不同?

一、Map1.定义Map是ES6提供的一种新的数据结构,它是键值对的集合,类似于对象,但是键的范围不限于字符串,各种类型的值都可以当做键。Object结构是“字符串-值”的对应,Map结构则是“值-值”的对应2.代码示例Map本身是一个构造函数,先来生成一个Map数据结构,从打印的结果就可以看出,Map实例有以下属性和

C#,《小白学程序》第二十三课:大数的除法(BigInteger Divide)

1文本格式///<summary>///比较a,b的大小,返回1,0,-1///数据从低位(右)往高位(左)存储;///</summary>///<paramname="a"></param>///<paramname="b"></param>///<returns></returns>publicstaticintb

pytorch的卷积层池化层和非线性变化 和机器学习线性回归

卷积层:两个输出的情况就会有两个通道可以改变通道数的最简单的神经网络结构:nn.Mudule就是继承父类super执行的是先执行父类函数里面的forward执行的就是前向网络,就是往前推进的,当然也有反向转播,那就是用来就gradientdicent了,求导计算了。卷积后的结果展示:这里有个小细节224*244输出22

优化软件系统,解决死锁问题,提升稳定性与性能 redis排队下单

项目背景:随着用户数量的不断增加,我们的速卖通小管家软件系统面临了一个日益严重的问题:在从存储区提供程序的数据读取器中进行读取时,频繁出现错误。系统报告了一个内部异常:异常信息如下:从存储区提供程序的数据读取器中进行读取时出错。有关详细信息,请参阅内部异常。--->System.Data.SqlClient.SqlEx

单例模式优缺点

单例模式是一种创建型设计模式,其主要目的是确保类只有一个实例,并提供全局访问点来获取该实例。单例模式具有一些优点和缺点,下面我将列出它们:**优点:**1.**全局唯一性**:单例模式确保在应用程序中只有一个实例,这对于某些类来说是非常有用的,例如配置管理、日志记录器、数据库连接等。2.**延迟初始化**:单例模式允许

网页的快捷方式打开自动全屏--Chrome、Firefox 浏览器相关设置

Firefox的全屏方式与Chrome不同,Chrome自带全屏模式以及APP模式,通过简单的参数即可设置,而Firefox暂时么有这个功能,Firefox的全屏功能可以通过全屏插件实现。全屏模式下,按F11不会退出全屏,鼠标移动到屏幕上方也不会提示退出全屏如果当前运行着其它的Chrome窗口,那么全屏化打开是无效的,

高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型

幂等概念来自于数学,在计算机科学中,幂等表示一次后、或多次请求某一资源,应该有同样的影响效果。在业务表现上一般是同样的数据效果,下面就常用的业务场景,来聊聊幂等的技术方案。-----------------数据层-----------------索引与事务根据业务需要,给表添加唯一索性或组合索引,防止产生脏数据。根据数

热文推荐