挺有趣的题:给定一个整数,判断其正负,正数返回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);

这样就可以了

利用位运算判断整数的正负相关推荐

  1. 位运算判断奇偶数_位运算判断奇偶数

    第一条:利用位运算判断一个整数是奇数还是偶数. 经常用到一个for循环,当索引i是奇数时执行语句A,偶数时执行语句B.判断i是奇数还是偶数,可用如下方法: if(i &1){ //i是奇数情况 ...

  2. 用一句位运算判断两个整数的大小并返回较大者

    2019独角兽企业重金招聘Python工程师标准>>> 用一句位运算判断两个整数的大小并返回较大者,不用if..else,不用循环,不用switch,不用条件运算符 const in ...

  3. 利用位运算和指针实现的交换两个数的程序

    位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下: (1) A ^ A = 0; (2) A = A ^B; ( ...

  4. 利用位运算解决 N 皇后问题

    题目: LeetCode 51. N-Queens 分析: N 皇后问题是考查递归回溯的经典问题,深度优先搜索的难点在于如何剪枝,在这个问题里面的剪枝,我们需要利用额外的空间去记录当前行的有效空位,只 ...

  5. 位运算判断奇偶-C语言

    //位运算判断奇偶 #include <stdio.h> int main() {int a;printf("输入一个整数:\n");scanf("%d&qu ...

  6. 利用位运算控制开关灯问题

    <C++笔记> 利用位运算控制开关灯问题 新手上路,可能有很多不足的地方,欢迎大家多多在留言区提出自己的观点以及更好的办法. 问题描述:俱乐部一共有32盏灯,设计一个灯光控制系统,共有4部 ...

  7. php 位运算与权限,PHP巧妙利用位运算实现网站权限管理的方法

    首先我们先定义4个常量来设定四种权限: ===================================== define(ADD,1);//增加数据库记录的权限 define(UPD,2);/ ...

  8. java int越界_用位运算判断int类型变量越界

    今天在做一道oj题的时候,遇到了一个情景,需要判断经过操作后的int类型数是否越界.我直接很暴力地比较和int类型的最大最小值来判断是否越界.但还想思考一下用位运算判断是否越界的方法,顺便巩固一下位运 ...

  9. 【Java】位运算判断2的N次幂

    思考 如何判断一个数是不是2的N次幂? 难道要一直除下去?一直乘过去?还是打表? 我们就不能简单一些处理这个问题吗? 那就有了这篇博客的内容--位运算判断一个数是不是2的N次幂-- 核心算法 其实就是 ...

最新文章

  1. android 5秒后进入,Android/Java:如何在5秒后停止下载?
  2. Spring MVC GET 从客户端数据到服务器端的乱码和服务器端数据到客户端的乱码
  3. 在线自动下载最新版本jquery
  4. LINUX/UNIX vi全屏幕编辑器
  5. Linux 开发环境工具 下载网址大全
  6. Oracle 数据库基本知识概念
  7. php云erp进销存v8手机端,PHP仿金蝶云ERP进销存V8网络多仓管理系统
  8. 大数据Hadoop快速入门教程
  9. html网页直播实时聊天,一分钟实现网页多人聊天室【Socket.IO】
  10. ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典
  11. Chelly个人训练
  12. 如何微信分享网页链接自定义图片和文字描述?生成微信自定义卡片链接流程(附教程与工具)
  13. 查看虚拟机vmware下linux的ip
  14. python时间相减_python处理时间加减
  15. Linux sysfs文件系统分析
  16. 《乐高EV3机器人搭建与编程》——1.5 主控器和电池
  17. 马哥Linux学习笔记8-4lvm应用
  18. LD_LIBRARY_PATH详解
  19. android 华为裁剪全图,调用Android原生裁剪方式裁剪图片并保存
  20. seo网站要发外链找哪些平台?

热门文章

  1. telnet服务端c 语言源码,Telnet服务端易语言源码
  2. 会议室分配时间最长_面试真题 | 3个会议室,现在有6个会议,你会如何安排?vvvv...
  3. 计算机软件网络工程报名,网络工程师如何报考?报考时间?
  4. 2022年N1叉车司机考试模拟100题及在线模拟考试
  5. 腾讯云大学-基于云的153个场景实验案例
  6. 药品追溯体系建设方案
  7. Jetson Tx1升级到ubuntu 20.04.5 LTS
  8. 黑客叔叔(雨袭团)内部交流题(第一季1.0.1):
  9. 即将面试的朋友注意啦, 技术突击的机会来啦
  10. 您应该知道的R data.table符号和运算符