博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现2017年京东编程题之异或问题
阅读量:6224 次
发布时间:2019-06-21

本文共 884 字,大约阅读时间需要 2 分钟。

问题描述:

  异或运算是常见的二进制运算,给出两个n位二进制数a,b。a异或b的运算依次考虑二进制的每一位,若这一位相同,那么这一位的异或结果就是0,不同就是1。

例如a=1100, b=0100。执行a异或b的运算,a的最高位是1,b的最高位是0,两个数字不同所以最高位异或结果是1;a和b次高位都是1,所以次高位异或为0;最后两位它们都是0,所以异或结果也都是0。那么a异或b的答案就是1000。

  现在输入两个n位二进制数,输出它们异或结果的十进制答案。上述样例中异或的二进制结果为1000,转化成十进制就是8。

测试用例:

4

1100

0011

out:15

代码:

 

//打开stdin流

$input = fopen("php://stdin","r");
//获取二进制位数)
$n = trim(fgets($input));
while($n){
  //获取第一、第二个二进制数,为避免空格的输入,去掉获取的值的前后空格
  $str1 = trim(fgets($input));
  $str2 = trim(fgets($input));
  //先将结果赋空
  $strout = '';
  //进行异或运算
  for($i=0;$i<$n;$i++){
    $strout.= ((int)$str1[$i])^((int)$str2[$i]);
  }
  ltrim($strout,1);
  //将异或之后的结果转换为十进制数并输出
  echo bindec($strout)."\n";
  $n = trim(fgets($input));
}
//关闭文件流
fclose($input);

调试:

win+r,输入cmd打开dos窗口,进入包含php.exe的目录下,如图所示:(注意:jingdong.php是我自己写好的php文件,拷贝到php目录下,或者用编译器直接在php目录下建立文件也可)。

 

 

转载于:https://www.cnblogs.com/ylcxBlog/p/6714448.html

你可能感兴趣的文章
多线程同步基础
查看>>
学习Nagios(一):Nagios安装
查看>>
@RequestParam 的用法
查看>>
修改CentOS菜单
查看>>
消息队列
查看>>
iOS开发UI篇—无限轮播(循环展示)
查看>>
iOS集成支付宝
查看>>
全栈工程师体能备战--阅读的书籍
查看>>
用UIInterpolatingMotionEffect产生透视效果
查看>>
Redis笔记(八)Redis的持久化
查看>>
【DATAGUARD】Data Guard Wait Events
查看>>
(九十七)函数与array对象
查看>>
android 内部文件读取
查看>>
Python 对图片进行人脸识别
查看>>
Go语言简明教程
查看>>
JVM Class字节码之三-使用BCEL改变类属性
查看>>
[JAVA &#183; 初级]:9.Object类提供的常用方法
查看>>
2016年2月问答活跃达人发奖品喽,大家快来领奖!
查看>>
【Android开发】多媒体应用开发-使用SoundPool播放音频
查看>>
Node.js 之对象池
查看>>