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/zh-tw/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

發表回復

登錄後才能評論