利用位运算判断整数的正负
挺有趣的题:给定一个整数,判断其正负,正数返回1,复数返回-1,0返回0.要求只能用位运算符和加号,且不能用循环判断等控制语句。
想到的代码是类似递归的,感觉还是挺笨的:
int sign(int x) {//Right move 31 bits, if x is non-negative, then a=0x00000000//if x is negative, then a = 0xFFFFFFFF//Treat the first bit and the rest differently//recursively determine if the value part is 0 or notint a = x >> 31;int b = (x & 0x0000FFFF)|(x >> 16 & 0x0000FFFF);b = (b & 0x000000FF) | (b >> 8 & 0x000000FF);b = (b & 0x0000000F) | (b >> 4 & 0x0000000F);b = (b & 0x00000003) | (b >> 2 & 0x00000003);b = (b & 0x00000001) | (b >> 1 & 0x00000001);return a|b;
}
However,这题要求最多不能用超过10个运算符,且使用的常数不能超过255,因此是不对的。
其实,右移31位就已经能判断是负数还是非负数了。因此,只要把原来的数取个反,就能知道是不是0了。
return (x >> 31) | (~((~x + 1) >> 31) + 1);
这样就可以了
利用位运算判断整数的正负相关推荐
- 位运算判断奇偶数_位运算判断奇偶数
第一条:利用位运算判断一个整数是奇数还是偶数. 经常用到一个for循环,当索引i是奇数时执行语句A,偶数时执行语句B.判断i是奇数还是偶数,可用如下方法: if(i &1){ //i是奇数情况 ...
- 用一句位运算判断两个整数的大小并返回较大者
2019独角兽企业重金招聘Python工程师标准>>> 用一句位运算判断两个整数的大小并返回较大者,不用if..else,不用循环,不用switch,不用条件运算符 const in ...
- 利用位运算和指针实现的交换两个数的程序
位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下: (1) A ^ A = 0; (2) A = A ^B; ( ...
- 利用位运算解决 N 皇后问题
题目: LeetCode 51. N-Queens 分析: N 皇后问题是考查递归回溯的经典问题,深度优先搜索的难点在于如何剪枝,在这个问题里面的剪枝,我们需要利用额外的空间去记录当前行的有效空位,只 ...
- 位运算判断奇偶-C语言
//位运算判断奇偶 #include <stdio.h> int main() {int a;printf("输入一个整数:\n");scanf("%d&qu ...
- 利用位运算控制开关灯问题
<C++笔记> 利用位运算控制开关灯问题 新手上路,可能有很多不足的地方,欢迎大家多多在留言区提出自己的观点以及更好的办法. 问题描述:俱乐部一共有32盏灯,设计一个灯光控制系统,共有4部 ...
- php 位运算与权限,PHP巧妙利用位运算实现网站权限管理的方法
首先我们先定义4个常量来设定四种权限: ===================================== define(ADD,1);//增加数据库记录的权限 define(UPD,2);/ ...
- java int越界_用位运算判断int类型变量越界
今天在做一道oj题的时候,遇到了一个情景,需要判断经过操作后的int类型数是否越界.我直接很暴力地比较和int类型的最大最小值来判断是否越界.但还想思考一下用位运算判断是否越界的方法,顺便巩固一下位运 ...
- 【Java】位运算判断2的N次幂
思考 如何判断一个数是不是2的N次幂? 难道要一直除下去?一直乘过去?还是打表? 我们就不能简单一些处理这个问题吗? 那就有了这篇博客的内容--位运算判断一个数是不是2的N次幂-- 核心算法 其实就是 ...
最新文章
- android 5秒后进入,Android/Java:如何在5秒后停止下载?
- Spring MVC GET 从客户端数据到服务器端的乱码和服务器端数据到客户端的乱码
- 在线自动下载最新版本jquery
- LINUX/UNIX vi全屏幕编辑器
- Linux 开发环境工具 下载网址大全
- Oracle 数据库基本知识概念
- php云erp进销存v8手机端,PHP仿金蝶云ERP进销存V8网络多仓管理系统
- 大数据Hadoop快速入门教程
- html网页直播实时聊天,一分钟实现网页多人聊天室【Socket.IO】
- ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典
- Chelly个人训练
- 如何微信分享网页链接自定义图片和文字描述?生成微信自定义卡片链接流程(附教程与工具)
- 查看虚拟机vmware下linux的ip
- python时间相减_python处理时间加减
- Linux sysfs文件系统分析
- 《乐高EV3机器人搭建与编程》——1.5 主控器和电池
- 马哥Linux学习笔记8-4lvm应用
- LD_LIBRARY_PATH详解
- android 华为裁剪全图,调用Android原生裁剪方式裁剪图片并保存
- seo网站要发外链找哪些平台?
热门文章
- telnet服务端c 语言源码,Telnet服务端易语言源码
- 会议室分配时间最长_面试真题 | 3个会议室,现在有6个会议,你会如何安排?vvvv...
- 计算机软件网络工程报名,网络工程师如何报考?报考时间?
- 2022年N1叉车司机考试模拟100题及在线模拟考试
- 腾讯云大学-基于云的153个场景实验案例
- 药品追溯体系建设方案
- Jetson Tx1升级到ubuntu 20.04.5 LTS
- 黑客叔叔(雨袭团)内部交流题(第一季1.0.1):
- 即将面试的朋友注意啦, 技术突击的机会来啦
- 您应该知道的R data.table符号和运算符