Transforming a byte with a subset of a small, fixed set of values and xor into any other value
$begingroup$
If I have some collection of bits, -- a byte, say -- of arbitrary value then I can transform it into some other value by means of exclusive-oring it with a subset of (in this case) eight fixed values, each affecting a single bit 0x80, 0x40, ... 0x01: every possible value is represented by some combination of operations from any given starting point.
But, clearly there are other sets of eight values which achieve this. For example 0b1xxxxxxx, 0b01xxxxxx, 0b001xxxxx, 0b0001xxxx, 0b00001xxx, 0b000001xx, 0b0000001x, 0b00000001 clearly satisfy these criteria and are a relatively large set of such values (as the x's can be distinct). (Proof: use the first value to get the msb correct then the second to get the second-msb correct, etc).
However, some sets clearly do not have this property, for three bits 0b101, 0b110 and 0b011, for example, clearly do not as every operation preserves parity.
I am interested in various aspects of the above property from a practical standpoint for a numerical computational model. I am not a theoretical computer scientist, but have studied these things in the last century, so I am vaguely aware that what I need to look at may amount to groups, Galois Fields, LFSRs, etc.
Could someone point me in the right direction so that my learning can be more directed than random flailing around textbooks and wikipedia? Just some signposts as to the names of the relevant fields of study, the great theorems/problems/categories and their names, the useful techniques, etc, would be fine.
linear-algebra group-theory
$endgroup$
add a comment |
$begingroup$
If I have some collection of bits, -- a byte, say -- of arbitrary value then I can transform it into some other value by means of exclusive-oring it with a subset of (in this case) eight fixed values, each affecting a single bit 0x80, 0x40, ... 0x01: every possible value is represented by some combination of operations from any given starting point.
But, clearly there are other sets of eight values which achieve this. For example 0b1xxxxxxx, 0b01xxxxxx, 0b001xxxxx, 0b0001xxxx, 0b00001xxx, 0b000001xx, 0b0000001x, 0b00000001 clearly satisfy these criteria and are a relatively large set of such values (as the x's can be distinct). (Proof: use the first value to get the msb correct then the second to get the second-msb correct, etc).
However, some sets clearly do not have this property, for three bits 0b101, 0b110 and 0b011, for example, clearly do not as every operation preserves parity.
I am interested in various aspects of the above property from a practical standpoint for a numerical computational model. I am not a theoretical computer scientist, but have studied these things in the last century, so I am vaguely aware that what I need to look at may amount to groups, Galois Fields, LFSRs, etc.
Could someone point me in the right direction so that my learning can be more directed than random flailing around textbooks and wikipedia? Just some signposts as to the names of the relevant fields of study, the great theorems/problems/categories and their names, the useful techniques, etc, would be fine.
linear-algebra group-theory
$endgroup$
add a comment |
$begingroup$
If I have some collection of bits, -- a byte, say -- of arbitrary value then I can transform it into some other value by means of exclusive-oring it with a subset of (in this case) eight fixed values, each affecting a single bit 0x80, 0x40, ... 0x01: every possible value is represented by some combination of operations from any given starting point.
But, clearly there are other sets of eight values which achieve this. For example 0b1xxxxxxx, 0b01xxxxxx, 0b001xxxxx, 0b0001xxxx, 0b00001xxx, 0b000001xx, 0b0000001x, 0b00000001 clearly satisfy these criteria and are a relatively large set of such values (as the x's can be distinct). (Proof: use the first value to get the msb correct then the second to get the second-msb correct, etc).
However, some sets clearly do not have this property, for three bits 0b101, 0b110 and 0b011, for example, clearly do not as every operation preserves parity.
I am interested in various aspects of the above property from a practical standpoint for a numerical computational model. I am not a theoretical computer scientist, but have studied these things in the last century, so I am vaguely aware that what I need to look at may amount to groups, Galois Fields, LFSRs, etc.
Could someone point me in the right direction so that my learning can be more directed than random flailing around textbooks and wikipedia? Just some signposts as to the names of the relevant fields of study, the great theorems/problems/categories and their names, the useful techniques, etc, would be fine.
linear-algebra group-theory
$endgroup$
If I have some collection of bits, -- a byte, say -- of arbitrary value then I can transform it into some other value by means of exclusive-oring it with a subset of (in this case) eight fixed values, each affecting a single bit 0x80, 0x40, ... 0x01: every possible value is represented by some combination of operations from any given starting point.
But, clearly there are other sets of eight values which achieve this. For example 0b1xxxxxxx, 0b01xxxxxx, 0b001xxxxx, 0b0001xxxx, 0b00001xxx, 0b000001xx, 0b0000001x, 0b00000001 clearly satisfy these criteria and are a relatively large set of such values (as the x's can be distinct). (Proof: use the first value to get the msb correct then the second to get the second-msb correct, etc).
However, some sets clearly do not have this property, for three bits 0b101, 0b110 and 0b011, for example, clearly do not as every operation preserves parity.
I am interested in various aspects of the above property from a practical standpoint for a numerical computational model. I am not a theoretical computer scientist, but have studied these things in the last century, so I am vaguely aware that what I need to look at may amount to groups, Galois Fields, LFSRs, etc.
Could someone point me in the right direction so that my learning can be more directed than random flailing around textbooks and wikipedia? Just some signposts as to the names of the relevant fields of study, the great theorems/problems/categories and their names, the useful techniques, etc, would be fine.
linear-algebra group-theory
linear-algebra group-theory
edited Jan 14 at 14:16
David Richerby
67k15102191
67k15102191
asked Jan 14 at 12:58
DannieDannie
1184
1184
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
You have recalled the correct category, "linear-algebra".
Let us see how we can interpret xor in the terms of linear-algebra. Here is the computation rules for xor.
$$0oplus0=0$$
$$0oplus1=1$$
$$1oplus0=1$$
$$1oplus1=0$$
If we consider 0 and 1 as the zero element and the unit element of the binary field $Bbb F_2$, the simplest finite field, then we can see $oplus$ is none other than the addition in $Bbb F_2$.
$$0+0=0$$
$$0+1=1$$
$$1+0=1$$
$$1+1=0$$
That means, if we xor a string of 3 bits to another string of 3 bits, we are actually adding two vectors $vec a$ and $vec b$ in the three-dimensional linear space $Bbb F_2^3,$
$$vec a+vec b=vec c$$
For example, $(0,1,0) + (1,1,0)=(1,0,0)$.
If we fix the second vector, the addition by the second vector is a linear transformation from $Bbb F_2^3$ to $Bbb F_2^3$. All these transformations form a 3-dimensional linear space over $Bbb F_2$ with basis
$${text{addition by (1,0,0)}, text{ addition by } (0,1,0), text{ addition by (0,0,1)}}.$$
Given a set of vector in $Bbb F_2^3$, all combinations of the additions by those vectors can transform any vector to another vector if and only those vectors are linearly independent.
For example, "three bits 0b101, 0b110 and 0b011" "do not have this property" because, $(1,0,1)+(1,1,0)+(0,1,1)=(0,0,0)$ in $Bbb F_2^3$, i.e, those three vectors are not linearly independent.
Here is a counting exercise.
(Exercise) Show the number of sets of such strings of 3 bits is $(2^3-1)*(2^3-2)*(2^3-2^2) = 168.$ In general the number of set of such string of n bits is $(2^n-1)(2^n-2)cdots(2^n-2^{n-1}).$
$endgroup$
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
add a comment |
$begingroup$
You need the eight values to be linearly independent so they form a basis of the space ${0,1}^8$.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "419"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f102853%2ftransforming-a-byte-with-a-subset-of-a-small-fixed-set-of-values-and-xor-into-a%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
You have recalled the correct category, "linear-algebra".
Let us see how we can interpret xor in the terms of linear-algebra. Here is the computation rules for xor.
$$0oplus0=0$$
$$0oplus1=1$$
$$1oplus0=1$$
$$1oplus1=0$$
If we consider 0 and 1 as the zero element and the unit element of the binary field $Bbb F_2$, the simplest finite field, then we can see $oplus$ is none other than the addition in $Bbb F_2$.
$$0+0=0$$
$$0+1=1$$
$$1+0=1$$
$$1+1=0$$
That means, if we xor a string of 3 bits to another string of 3 bits, we are actually adding two vectors $vec a$ and $vec b$ in the three-dimensional linear space $Bbb F_2^3,$
$$vec a+vec b=vec c$$
For example, $(0,1,0) + (1,1,0)=(1,0,0)$.
If we fix the second vector, the addition by the second vector is a linear transformation from $Bbb F_2^3$ to $Bbb F_2^3$. All these transformations form a 3-dimensional linear space over $Bbb F_2$ with basis
$${text{addition by (1,0,0)}, text{ addition by } (0,1,0), text{ addition by (0,0,1)}}.$$
Given a set of vector in $Bbb F_2^3$, all combinations of the additions by those vectors can transform any vector to another vector if and only those vectors are linearly independent.
For example, "three bits 0b101, 0b110 and 0b011" "do not have this property" because, $(1,0,1)+(1,1,0)+(0,1,1)=(0,0,0)$ in $Bbb F_2^3$, i.e, those three vectors are not linearly independent.
Here is a counting exercise.
(Exercise) Show the number of sets of such strings of 3 bits is $(2^3-1)*(2^3-2)*(2^3-2^2) = 168.$ In general the number of set of such string of n bits is $(2^n-1)(2^n-2)cdots(2^n-2^{n-1}).$
$endgroup$
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
add a comment |
$begingroup$
You have recalled the correct category, "linear-algebra".
Let us see how we can interpret xor in the terms of linear-algebra. Here is the computation rules for xor.
$$0oplus0=0$$
$$0oplus1=1$$
$$1oplus0=1$$
$$1oplus1=0$$
If we consider 0 and 1 as the zero element and the unit element of the binary field $Bbb F_2$, the simplest finite field, then we can see $oplus$ is none other than the addition in $Bbb F_2$.
$$0+0=0$$
$$0+1=1$$
$$1+0=1$$
$$1+1=0$$
That means, if we xor a string of 3 bits to another string of 3 bits, we are actually adding two vectors $vec a$ and $vec b$ in the three-dimensional linear space $Bbb F_2^3,$
$$vec a+vec b=vec c$$
For example, $(0,1,0) + (1,1,0)=(1,0,0)$.
If we fix the second vector, the addition by the second vector is a linear transformation from $Bbb F_2^3$ to $Bbb F_2^3$. All these transformations form a 3-dimensional linear space over $Bbb F_2$ with basis
$${text{addition by (1,0,0)}, text{ addition by } (0,1,0), text{ addition by (0,0,1)}}.$$
Given a set of vector in $Bbb F_2^3$, all combinations of the additions by those vectors can transform any vector to another vector if and only those vectors are linearly independent.
For example, "three bits 0b101, 0b110 and 0b011" "do not have this property" because, $(1,0,1)+(1,1,0)+(0,1,1)=(0,0,0)$ in $Bbb F_2^3$, i.e, those three vectors are not linearly independent.
Here is a counting exercise.
(Exercise) Show the number of sets of such strings of 3 bits is $(2^3-1)*(2^3-2)*(2^3-2^2) = 168.$ In general the number of set of such string of n bits is $(2^n-1)(2^n-2)cdots(2^n-2^{n-1}).$
$endgroup$
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
add a comment |
$begingroup$
You have recalled the correct category, "linear-algebra".
Let us see how we can interpret xor in the terms of linear-algebra. Here is the computation rules for xor.
$$0oplus0=0$$
$$0oplus1=1$$
$$1oplus0=1$$
$$1oplus1=0$$
If we consider 0 and 1 as the zero element and the unit element of the binary field $Bbb F_2$, the simplest finite field, then we can see $oplus$ is none other than the addition in $Bbb F_2$.
$$0+0=0$$
$$0+1=1$$
$$1+0=1$$
$$1+1=0$$
That means, if we xor a string of 3 bits to another string of 3 bits, we are actually adding two vectors $vec a$ and $vec b$ in the three-dimensional linear space $Bbb F_2^3,$
$$vec a+vec b=vec c$$
For example, $(0,1,0) + (1,1,0)=(1,0,0)$.
If we fix the second vector, the addition by the second vector is a linear transformation from $Bbb F_2^3$ to $Bbb F_2^3$. All these transformations form a 3-dimensional linear space over $Bbb F_2$ with basis
$${text{addition by (1,0,0)}, text{ addition by } (0,1,0), text{ addition by (0,0,1)}}.$$
Given a set of vector in $Bbb F_2^3$, all combinations of the additions by those vectors can transform any vector to another vector if and only those vectors are linearly independent.
For example, "three bits 0b101, 0b110 and 0b011" "do not have this property" because, $(1,0,1)+(1,1,0)+(0,1,1)=(0,0,0)$ in $Bbb F_2^3$, i.e, those three vectors are not linearly independent.
Here is a counting exercise.
(Exercise) Show the number of sets of such strings of 3 bits is $(2^3-1)*(2^3-2)*(2^3-2^2) = 168.$ In general the number of set of such string of n bits is $(2^n-1)(2^n-2)cdots(2^n-2^{n-1}).$
$endgroup$
You have recalled the correct category, "linear-algebra".
Let us see how we can interpret xor in the terms of linear-algebra. Here is the computation rules for xor.
$$0oplus0=0$$
$$0oplus1=1$$
$$1oplus0=1$$
$$1oplus1=0$$
If we consider 0 and 1 as the zero element and the unit element of the binary field $Bbb F_2$, the simplest finite field, then we can see $oplus$ is none other than the addition in $Bbb F_2$.
$$0+0=0$$
$$0+1=1$$
$$1+0=1$$
$$1+1=0$$
That means, if we xor a string of 3 bits to another string of 3 bits, we are actually adding two vectors $vec a$ and $vec b$ in the three-dimensional linear space $Bbb F_2^3,$
$$vec a+vec b=vec c$$
For example, $(0,1,0) + (1,1,0)=(1,0,0)$.
If we fix the second vector, the addition by the second vector is a linear transformation from $Bbb F_2^3$ to $Bbb F_2^3$. All these transformations form a 3-dimensional linear space over $Bbb F_2$ with basis
$${text{addition by (1,0,0)}, text{ addition by } (0,1,0), text{ addition by (0,0,1)}}.$$
Given a set of vector in $Bbb F_2^3$, all combinations of the additions by those vectors can transform any vector to another vector if and only those vectors are linearly independent.
For example, "three bits 0b101, 0b110 and 0b011" "do not have this property" because, $(1,0,1)+(1,1,0)+(0,1,1)=(0,0,0)$ in $Bbb F_2^3$, i.e, those three vectors are not linearly independent.
Here is a counting exercise.
(Exercise) Show the number of sets of such strings of 3 bits is $(2^3-1)*(2^3-2)*(2^3-2^2) = 168.$ In general the number of set of such string of n bits is $(2^n-1)(2^n-2)cdots(2^n-2^{n-1}).$
edited Jan 15 at 19:59
answered Jan 14 at 15:01
Apass.JackApass.Jack
9,5101937
9,5101937
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
add a comment |
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
Thank you. I am (wearily) used to the idea of (generally continuous) basis-vectors etc from other disciplines, and I'd not thought of formulating it in that way, and now that makes intuitive sense.
$endgroup$
– Dannie
Jan 14 at 15:27
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
As for the counting exercise, based on your answer: in this very special field there is no need to worry about proportionality because 2n*vector = 0; -vector = +vector. So each basis vector can occur 0 or 1 times in any expression that might be null (dependency test). We have free choice in establishing the first axis (except null) so 2^n-1. In others we must ensure any combination of presence/absence of earlier established axes is non-null. As each of those is present/absent that's 2^(n-1) permutations, all distinct because of nature of xor, so that has 2^n-2^(n-1) possible values. ?qed?
$endgroup$
– Dannie
Jan 14 at 15:31
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
$begingroup$
Correct.$quad$
$endgroup$
– Apass.Jack
Jan 14 at 15:32
add a comment |
$begingroup$
You need the eight values to be linearly independent so they form a basis of the space ${0,1}^8$.
$endgroup$
add a comment |
$begingroup$
You need the eight values to be linearly independent so they form a basis of the space ${0,1}^8$.
$endgroup$
add a comment |
$begingroup$
You need the eight values to be linearly independent so they form a basis of the space ${0,1}^8$.
$endgroup$
You need the eight values to be linearly independent so they form a basis of the space ${0,1}^8$.
answered Jan 14 at 14:15
David RicherbyDavid Richerby
67k15102191
67k15102191
add a comment |
add a comment |
Thanks for contributing an answer to Computer Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f102853%2ftransforming-a-byte-with-a-subset-of-a-small-fixed-set-of-values-and-xor-into-a%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown