php按位异或运算(php异或运算符)

本文目录一览:

其他语言如何解密PHP多字符串的异或加密

利用“^”异或运算对字符串进行加密

思路:1.先创建字符串输入的Scanner;

2.通过char[] array = password.toCharArray();// 获取字符数组;

3.遍历字符数组,按目前理解要用到遍历:数组所有元素进行访问,比如你要输出数组里所有的信息时,就要用到

4.进行异或运算

按位做“异或”运算是:位值相同得1,不同得0

例如:

加密过程:

原解释的二进制为 1 1 0 0 —-原文

设定的key的二进制为 0 1 1 0 —-密匙

两者做“异或”结果为 0 1 0 1 —-密文

解密过程:

0 1 0 1—-密文

0 1 1 0—-密匙

两者“异或”就得到了原文 1 1 0 0 —-原文

详细代码:

package com.lixiyu;

import java.util.Scanner;

public class Example {

public static void main(String[] args){

Scanner sca=new Scanner(System.in);

System.out.println(“请输入一个英文字符串或解密字符串”);

String line=sca.nextLine();//获取用户输入信息

char[] array=line.toCharArray();//获取字符数组

for (int i=0;iarray.length;i++){//历遍字符数组

array[i]=(char) (array[i]^20000);//对数组每个元素进行异或运算

}

System.out.println(“加密解密结果如下:”);

System.out.println(new String(array));//输出密钥

}

}

异或运算:

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

字符’A’ 的ASCII编码为65 : 00000000 01000001

取整数7 : 00000000 00000000 00000000 00000111

XOR运算后 : 00000000 00000000 00000000 01000110

简单加密算法代码如下 :

public class Test {

public static final int KEY = 7;

public static void main(String[] args) {

String str = “Hello World!”;

StringBuffer str2 = new StringBuffer(); //存储加密后的字符串

StringBuffer str3 = new StringBuffer(); //存储解密后的字符串

//加密过程

for(int i=0;istr.length();i++)

{

char c = (char)(str.charAt(i) ^ KEY);

str2.append(c);

}

//解密过程

for(int i=0;istr2.length();i++)

{

char c = (char)(str2.charAt(i) ^ KEY);

str3.append(c);

}

System.out.println(“原始 的字符串为:” + str);

System.out.println(“加密后 的字符串为:” + str2);

System.out.println(“解密后 的字符串为:” + str3);

}

}

输出:

原始 的字符串为:Hello World!

加密后 的字符串为:Obkkh’Phukc

解密后 的字符串为:Hello World!

求助!什么是按位或,什么是按位异或,什么是按位与?

1、按位或:如果两个相应的二进制位有一个为1,则该结果为1,否则为0。

2、按位异或(^):如果两个相应的二进制位值不同则为1,否则为0。

3、按位与():如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。按位的各种运算,结合图形看起来是不是还挺简单,不过这些都是正数的操作,负数还涉及到补码。

扩展资料:

注意事项:

1、如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。

2、以与运算为例说明如下:在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行与运算,右端对齐后,左边不足的位依下面三种情况补足:

如果整型数据为正数,左边补16个0。

如果整型数据为负数,左边补16个1。

如果整形数据为无符号数,左边也补16个0。

参考资料来源:百度百科-按位或

参考资料来源:百度百科-异或

参考资料来源:百度百科-按位与

PHP语言PHP语言里的位运算符&、|、^ 、~、〈〈 、〉〉这些符号我一个也不懂,希望高手给个全面的解释!拜

“” 按位与运算

按位与运算符””是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。

例如:95可写算式如下:

00001001 (9的二进制补码)

00000101 (5的二进制补码)

00000001 (1的二进制补码)

?php

$a = 9;

$b = 5;

echo sprintf(“%b”, $a$b);

?

“|” 按位或运算

按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

例如:9|5可写算式如下:

00001001

|00000101

00001101 (十进制为13)可见9|5=13

?php

$a = 9;

$b = 5;

echo sprintf(“%b”, $a|$b).”\n”; //二进制

echo sprintf(“%d”, $a|$b).”\n”; //十进制

“^” 按位异或运算

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:

00001001

^00000101

00001100 (十进制为12)

?php

$a = 9;

$b = 5;

echo sprintf(“%b”, $a^$b).”\n”; //二进制

echo sprintf(“%d”, $a^$b).”\n”; //十进制

“~” 求反运算

求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。

例如~9的运算为:

~(0000000000001001)结果为:1111111111110110

?php

$a = 9;

$b = 5;

echo sprintf(“%b”, ~$a).”\n”; //二进制

“〈〈” 左移运算

左移运算符“”是双目运算符。其功能把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。

例如:

a4

指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

?php

$a = 3;

$temp = $a4;

echo sprintf(“%d”, $temp).”\n”; //十进制

“” 右移运算

右移运算符“”是双目运算符。其功能是把“ ”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数。

例如:

设 a=48,

a4

表示把00110000右移为00000011(十进制3)。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定

?php

$a = 48;

$temp = $a4;

echo sprintf(“%d”, $temp).”\n”; //十进制

按位异或运算符怎么用

1:“按位与”运算符()用法是如果两个相应的二进制位都为1,则该位的结果值为1否则为0。00=0,10=0,11=1

2:“按位或”运算符(|)用法是如果两个相应的二进制位有一个为1,则该位的结果值为1否则为0。00=0,10=0,11=1

0,10=1,11=1

3:“异或”运算符(^)用法是如果两个相应的二进制位为同号,则该位的结果值为1否则为0。00=1,10=0,11=1

PHP中echo 12 ^ 9;得出的结果是什么?谁能给我个完美的解释。PHP新手这边有礼了~~0.0

对,这是”^” 按位异或运算

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1,反之结果为0;

使用sprintf 打印出 12 和 9 的二进制。结果为

1100和1001

————————–

运算过程 :从左到右

第一位都是1 那么得 0

第二位相异 得 1

第三位都是0 得 0

第四位相异 得 1

那么结果就是0101

转化为十进制~就是5了。

php 简单的异或运算

异或一下可求出。

?php

function showXor($a, $b){

       $c=$a^$b;

       printf(‘%x xor %x = %x br/’,$a,$c,$b);

}

showXor(0xe79a, 0xc97a);

showXor(0xe520, 0xc520);

e79a xor 2ee0 = c97a 

e520 xor 2000 = c520

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/240887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:23
下一篇 2024-12-12 12:23

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • 条件运算符(?:)是什么意思?

    条件运算符(?:)是JavaScript中的一种特殊的运算符,也是许多编程语言中相似语法的一部分。它可以允许我们在一个简单、一行的语句中完成条件判断和赋值操作,非常方便。 1.语法…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python中赋值运算符和相等运算符解析

    Python是一种高级编程语言,它通常被用于开发 Web 应用程序、人工智能、数据分析和科学计算。在Python中,赋值运算符和相等运算符是非常常见和基本的运算符,它们也是进行编程…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • Python中的算数运算符优先级问题

    本文将从多个方面详细阐述Python中算数运算符的优先级问题,并给出对应代码示例。算数运算符的优先级指的是在混合运算时,Python自动根据一定的优先级顺序决定哪一个运算符先进行。…

    编程 2025-04-28
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • Python比较运算符

    Python中的比较运算符有六个,分别是等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。本篇文章将从以下几个方面详…

    编程 2025-04-27
  • PHP登录页面代码实现

    本文将从多个方面详细阐述如何使用PHP编写一个简单的登录页面。 1. PHP登录页面基本架构 在PHP登录页面中,需要包含HTML表单,用户在表单中输入账号密码等信息,提交表单后服…

    编程 2025-04-27

发表回复

登录后才能评论