我想将float
值的符号int
表示为-1或1。
避免使用条件总是减少计算成本的好主意。例如,我可以想到的一种方法是使用快速bit-shift
获取符号:
float a = ...;
int sign = a >> 31; //0 for pos, 1 for neg
sign = ~sign; //1 for pos, 0 for neg
sign = sign << 1; //2 for pos, 0 for neg
sign -= 1; //-1 for pos, 1 for neg -- perfect.
或更简而言之:
int sign = (~(a >> 31) << 1) - 1;
您不简单使用的任何原因:
int sign = (int) Math.signum(a); //1 cast for floating-points, 2 for Integer types
另外,大多数Number实现都有一个signum方法,该方法采用该类型的原语并返回一个int,因此可以避免强制转换以提高性能。
int sign1 = Integer.signum(12); //no casting
int sign2 = Long.signum(-24l); //no casting
它将返回+1 / 0 / -1,并且已经过优化以提供良好的性能。
作为参考,您可以看一下openJDK中的实现。相关位是:
public static float signum(float f) {
return (f == 0.0f || isNaN(f)) ? f : copySign(1.0f, f);
}
public static boolean isNaN(float f) {
return (f != f);
}
public static float copySign(float magnitude, float sign) {
return rawCopySign(magnitude, (isNaN(sign) ? 1.0f : sign));
}
public static float rawCopySign(float magnitude, float sign) {
return Float.intBitsToFloat((Float.floatToRawIntBits(sign)
& (FloatConsts.SIGN_BIT_MASK))
| (Float.floatToRawIntBits(magnitude)
& (FloatConsts.EXP_BIT_MASK
| FloatConsts.SIGNIF_BIT_MASK)));
}
static class FloatConsts {
public static final int SIGN_BIT_MASK = -2147483648;
public static final int EXP_BIT_MASK = 2139095040;
public static final int SIGNIF_BIT_MASK = 8388607;
}
问题内容: 我有一张表: 如果为is ,则表示该用户当前具有该计划。 我想查询的是:(a)他当前正在使用的计划,或(b)他所参与的最新计划。对于每个给定的用户,我只需要返回一行。 现在,我设法通过使用联合和子查询做到了这一点,但是碰巧表很大,而且效率不高。你们中的每个人都可以有一种更快的查询方式吗? 谢谢, [编辑]多数答案在这里返回单个值。那是我的坏事。我的意思是为每个用户返回一个值,但一次返回
问题内容: 我的Web应用程序使用会话来存储有关用户登录后的信息,并在用户在应用程序中逐页浏览时维护该信息。在这个特定的应用程序,我存储,和人的。 我想在登录时提供“保持登录状态”选项,该选项会将cookie在用户的计算机上放置两周,当他们返回应用程序时,将使用相同的详细信息重新开始会话。 这样做的最佳方法是什么?我不想将其存储在cookie中,因为这似乎会使一个用户更容易伪造另一位用户的身份。
本文向大家介绍electron实现qq快捷登录的方法示例,包括了electron实现qq快捷登录的方法示例的使用技巧和注意事项,需要的朋友参考一下 之前本来想不写这个功能的,结果客户死活要qq登录! 实在没办法就写了,顺便写个文章! 在写之前有两个问题: 1: 打开qq授权页面点击页面中的链接会又打开一个页面! ..... 2: 授权之后是否成功很难去判断 不过脑海中有一个想法就是,electro
问题内容: 我想要用Java开发ORKUT(http://www.ORKUT.com)主页的pagesource 。 但是在访问任何页面之前,需要先登录到ORKUT。我该怎么做。它不应介于两者之间 问题答案: 您应该看看Commons HTTP Client 。使用它,您可以发送带有登录数据的POST请求,然后使用会话ID进行进一步处理。
读取用户登陆信息 调用地址 https://secure.bilibili.tv/login 参数 字段 必选 类型 说明 api true string 申请时填入的API地址 appkey true string 申请时系统提供的Key sign true string 校验密钥 md5(“api=“) 回调 编码为UTF-8 返回值字段 字段类型 字段说明 mid int 会员编号 unam
1.如何获取APPID和APPSECRET这两个参数? 1.需登录微信开放平台配置,具体可参考使用手册。 2.申请QQ互联申请链接 2.升级以后,微信浏览底部图标不显示,应该检查哪里? 后台店铺手机端底部导航设置