MATLAB Answers

Bit xor of two binary strings and conversion into decimal

46 views (last 30 days)
lilly lord
lilly lord on 19 Jun 2020
Commented: lilly lord on 21 Jun 2020
Hi, I have two large binary strings (e.g 256 bits each), then how to perform bit Xor operation and then convert the answer into decimal number.
str1='11010011110111110000110110111111';
str2='00011111001101011010001111100001';
str3=bitxor(str1,str2);
%%getting error in str3
  3 Comments

Sign in to comment.

Accepted Answer

James Tursa
James Tursa on 19 Jun 2020
Edited: James Tursa on 19 Jun 2020
The xor part as a logical vector result
result = str1 ~= str2;
Or if you wanted it as char:
str3 = char((str1 ~= str2) + '0');
For 8-bit chunks turned into decimal numbers:
result = 2.^(7:-1:0) * reshape(str1 ~= str2,8,[]);
  7 Comments
lilly lord
lilly lord on 21 Jun 2020
I was workig on random bits generating and try different methods. Your both answer solved my problem . Thanks once again
%%%%Test random bit generation
I=imread('airplane.png');
I2=imresize(I,[128 128]);figure;imshow(I2)
R=I2(:,:,1);G=I2(:,:,2);
R_r=reshape(R,1,[]);
G_row=reshape(G,1,[]);
G_bits=dec2bin(G_row,8);
R_bits=dec2bin(R_r,8);
Red_bits=R_bits(:)';
Gr_bits=G_bits(:)';
%Extract last four bits
R_newbit=R_bits(:,5:end);
R_finabit=R_newbit(:)';
G_newbit=G_bits(:,5:end);
G_finalbit=G_newbit(:)';
s1=length(R_finabit);%check the size of both strings
s2=length(G_finalbit);
%bit Xor g final bit and r final bit and give the answer in dec number
result = 2.^(7:-1:0) * reshape(R_finabit ~= G_finalbit,8,[]);

Sign in to comment.

More Answers (1)

David Hill
David Hill on 19 Jun 2020
Use java BigInteger
import java.math.*;
a=BigInteger(str1,2);
b=BigInteger(str2,2);
c=a.xor(b);%c will be the decimal BigInteger

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!