php把1拆分成三份,【php】位运算如何拆分

举例,比如说下面可以组合成7

1|2|4; // 7

那么比如我给一个15,怎么拆分成:1、2、4、8,或者是任意其他数,怎么进行拆分

回答

不熟悉php。可以先确定这个数占多少位,比如64或者32等。然后再左移位,按位与来解决。写了个python的。xrange的意思是从64开始递减到0,每次递减1.

这里假定是64位,符号位就不考虑了。

dest_num = 11

for i in xrange(64, -1, -1):

n = 1 << i

r = n & dest_num

if r != 0:

print r

应该很容易改造成php的。

用移位来做应该会好一些,把有效位抽出来

其实你要就是一个数字的二进制表示

比如

15实际上是1111, 最右边1是12^0=1, 从右向左第二个是12^1=2, 第三个是12^2=4, 第四个是12^3=8

22用二进制是10110, 02^0+12^1+12^2+02^3+1*2^4 = 0+2+4+0+16 = 22

整数到二进制的做法是用除二法

22/2 = 11 ….. 0

11/2 = 5 ….. 1

5/2 = 2 ….. 1

2/2 = 1 ….. 0

1/2 = 0 ….. 1

一直除到为0, 余数10110就是它的二进制数

可以使用decbin方法 参考手册

首先得出二进制数,然后字符串操作依次读取

如 decbin(7) => 111

从右开始算,依次得出:

第一位可以得出2^(1-1)=1

第二位可以得出2^(2-1)=2

第三位可以得出2^(3-1)=4

同理:

decbin(15) => 1111 => 1|2|4|8

decbin(13) => 1101 => 1|4|8

15 的二进制是:1111

1 的二进制是:0001

2 的二进制是:0010

4 的二进制是:0100

8 的二进制是:1000

看懂了吗?

或运算就是把对应位置的1组合到一起。

Javascript版的算法:

function split(n) {

n = n|0; // 将浮点数n转化为正整数

let pad = 0;

const arr = []; // 用于保存结果的数组

while(n) {

if (n&1) arr.push(1<

pad++;

n >>= 1;

}

return arr;

}

对应的 PHP 版本:

function split($n) {

$n |= 0;

$pad = 0;

$arr = array();

while ($n) {

if ($n & 1) array_push($arr, 1 << $pad);

$pad++;

$n >>= 1;

}

return $arr;

}

def decrypt(n):

arr = []

i = 0

while n > 0:

x = n % 2

n >>= 1

if x == 1:

arr.append(i)

i += 1

return arr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20155202 实验四 Android开发基础

20155202 实验四 Android开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android、组件、布局管理器的使用&#xff1b; 3&#xff0e;掌握Android中事件处理机制。 实验要求 第24章&#xff1a;初识Android任务一&#xff1a;完成Hello World…

死信队列和延迟队列_在实践中使用延迟队列

死信队列和延迟队列通常&#xff0c;在某些情况下&#xff0c;当您有某种工作或作业队列时&#xff0c;有必要不立即处理每个工作项或作业&#xff0c;而是要延迟一些时间。 例如&#xff0c;如果用户单击一个按钮来触发要完成的某项工作&#xff0c;而一秒钟后&#xff0c;用户…

python的代码在哪写_python代码在哪里编写

编写python代码&#xff0c;可以在自带的ide中写&#xff0c;也可以使用第三方编辑器&#xff0c;下面介绍几款常见的python IDE 1. VimVim 可以说是 Python 最好的 IDE。Vim 是高级文本编辑器&#xff0c;旨在提供实际的 Unix 编辑器‘Vi’功能&#xff0c;支持更多更完善的特…

nio框架中的多个Selector结构

随着并发数量的提高&#xff0c;传统nio框架采用一个Selector来支撑大量连接事件的管理和触发已经遇到瓶颈&#xff0c;因此现在各种nio框架的新版本都采用多个Selector并存的结构&#xff0c;由多个Selector均衡地去管理大量连接。这里以Mina和Grizzly的实现为例。 在Mina 2…

js 编码 php解码,浅谈php和js中json的编码和解码

php中1)编码$jsonStr json_encode($array)2)解码$arr json_decode($jsonStr)echo json_encode("中文", JSON_UNESCAPED_UNICODE);添加参数&#xff1a;JSON_UNESCAPED_UNICODE即可。测试环境&#xff1a;PHP Version 5.5.36js中1. 编码var str obj.toJSONString()…

如果您在2015年编写过Java代码-这是您不容错过的趋势

去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中&#xff0c;我们将回顾构成我们2015年对话的5个主题和新发展。与其他许多年终总结保持较高水平的不同&#xff0c;我们将做一个更实际的操作不用流行语 。 好吧&#xff0c;没有太多*流行语。 与往常一样&#xff0c;对…

mel滤波器组频率响应曲线_了解二阶滤波器的奈奎斯特图

在之前的文章中&#xff0c;我介绍了奈奎斯特图&#xff0c;然后我们通过检查奈奎斯特曲线和截止频率与一阶无源滤波器之间的关系&#xff0c;更详细地探索了这些类型的图。在本文中&#xff0c;我们将查看二阶滤波器的奈奎斯特图。二阶过滤器当我说“二阶”滤波器时&#xff0…

CJOJ 免费航班

Description 小Z在MOI比赛中获得了大奖&#xff0c;奖品是一张特殊的机 票。使用这张机票&#xff0c;可以在任意一个国家内的任意城市之间的免费飞行&#xff0c;只有跨国飞行时才会有额外的费用。小Z获得了一张地图&#xff0c;地图上有城市之间的飞机航班和 费用。已知从每个…

java perl5compiler,Java中正则表达式使用方法详解(四)

3.2 HTML处理实例一下面一个任务是分析HTML页面内FONT标记的所有属性。HTML页面内典型的FONT标记如下所示程序将按照如下形式&#xff0c;输出每一个FONT标记的属性在这种情况下&#xff0c;我建议你使用两个正则表达式。第一个如图十一所示&#xff0c;它从字体标记提取出“&q…

java 缓存接口,java项目中,针对缓存问题的处理方式【接口中的处理方式】

1、在service包中&#xff0c;分别建立了关于缓存的一系列的接口、类等&#xff0c;封装到一个工具包中&#xff1b;临时缓存的接口(代码部分)&#xff1a;packagecom.tools;importjava.util.Date;public interfaceCacheTemplet {//设置添加永久缓存,(缓存唯一索引&#xff0c;…

【hh】我胡汉三又回来了

hh 差不多半年没来机房了&#xff0c;高一的都已经碾压我100题了 开始得比较晚&#xff0c;估计比高一的早两三个月吧&#xff0c;停了这半年落下了不少。 但是没有关系啊&#xff0c;学OI纯粹是好玩嘛&#xff0c;一开始报名的时候根本不知道有联赛这回事&#xff08;其实报名…

python爬取知乎标题_python爬虫 爬取知乎文章标题及评论

目的&#xff1a;学习笔记2.首先我们试着爬取下来一篇文章的评论&#xff0c;通过搜索发现在 response里面我们并没有匹配到评论&#xff0c;说明评论是动态加载的。3.此时我们清空请求&#xff0c;收起评论&#xff0c;再次打开评论 4.完成上面操作后&#xff0c;我们选择XHR&…

php curl 要安装pear,MacOS 安装pear

1、下载Pearcurl -O https://pear.php.net/go-pear.phar2、安装Pearsudo php -d detect_unicode0 go-pear.phar安装过程需要进行简单的配置&#xff0c;如下Below is a suggested file layout for your new PEAR installation. Tochange individual locations, type the number…

CentOS7 下调教mysql记实 之一

迁移数据库时遇到错误&#xff1a; Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 解释&…

java 映射数组_Java中的数组,列表,集合,映射,元组,记录文字

java 映射数组有时&#xff0c;当我对JavaScript的强大功能和表现力感到兴奋时&#xff0c;我发现自己错过了Java世界中的一两个功能。 除了lambda表达式/闭包或任何您想称为“匿名函数”的东西之外&#xff0c;它还对数组&#xff0c;数组&#xff0c;列表&#xff0c;集合&am…

知道接口地址 如何传数据_如何选显示器连接线?四种主流接口要知道

前两天家里电脑显示器的线坏了&#xff0c;火急火燎的买了根线&#xff0c;谁知道买回来之后接口不匹配&#xff0c;不能用。显示器为什么要有这么多接口呢&#xff1f;这些接口又有什么区别呢&#xff1f;必须把它搞清楚&#xff01;这不&#xff0c;经过我的不屑努力&#xf…

docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列

前言经常在开发中会遇到一些不需要同步执行的业务&#xff0c;那我们就需要用到消息队列来进行异步执行&#xff0c;但是对于某些业务就还需要用到延时的功能&#xff0c;比如订单支付超时关闭&#xff0c;那么这个时候我们就需要开启消息队列的延时功能&#xff0c;当然也有朋…

[转]Eclipse插件开发之基础篇(3) 插件的测试与调试

原文地址&#xff1a;http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html 1. 使用JUnit对插件进行测试 Eclipse中已经嵌入了JUnit&#xff0c;我们可以使用JUnit为插件进行单体测试。一般的JUnit是不可以对插件部分(对Eclipse的API依赖的部分)进行测…

您应该考虑将应用程序升级到Spring 4的5个理由

Spring Framework于2004年首次发布&#xff0c;是顶级Java框架之一。 Spring 4已于2013年12月发布&#xff0c;它是支持Java 8的第一个框架版本。了解为什么应该考虑将应用程序升级到Spring 4。 注意&#xff1a;我最初将此博客文章写在公司博客http://blog.goyello.com上 。 …

大整数乘法c语言代码_大整数乘法

大整数乘法和我们小学学过的乘法公式一样&#xff08;如下图&#xff09;&#xff0c;就是按位相乘&#xff0c;两个数中的每一位彼此相乘&#xff0c;然后将相同列的结果加起来&#xff0c;最后统一处理进位即可。#include <iostream> #include <cstring> using n…