LKML Archive on lore.kernel.org
 help / color / Atom feed
* fast binary calculator
@ 2020-07-05  0:31 Andre Coelho
  0 siblings, 0 replies; only message in thread
From: Andre Coelho @ 2020-07-05  0:31 UTC (permalink / raw)
  To: linux-kernel


[-- Attachment #1: Type: text/plain, Size: 2345 bytes --]

ey


Ive made a program, that uses bit flips to quickly represent binary numbers

for instance, if i use a 128bit number than the algorithm uses

128+128+128 (and not 128*128)

for each bit.

Basically, it assigns slots to bits, so for instance

pos 1    pos 2 pos 3

0             0       0

1            1      1

so that reduces the time it takes to scan them. I also use bit flips to 
change the bit on a particular slot.


i wrote both c and java files.


later


Here is the code in c

#include <stdio.h>


char flipBit(char c);

char flipBit(char c) {
     if (c == '0')
         return '1';
     else
         return '0';



}


int main() {





                         char binaryNumber[] = { '0','0','0','0',0 };
                         int slot1,slot2,slot3,slot4;


                         for (slot1=0 ; slot1 < 2 ; slot1++) {
                             printf("\n%s",binaryNumber);
                             for (slot2 =1 ; slot2 < 2 ; slot2++) {
                                 binaryNumber[slot2] = 
flipBit(binaryNumber[slot2]);

                                 printf("\n%s",binaryNumber);

                                 for (slot3=2 ; slot3 < 3 ; slot3++) {
                                     binaryNumber[slot3] = 
flipBit(binaryNumber[slot3]);
                                     printf("\n%s",binaryNumber);


                                     for (slot4=3 ; slot4 < 4 ; slot4++) {
                                         binaryNumber[slot4] = 
flipBit(binaryNumber[slot4]);
printf("\n%s",binaryNumber);
                                     }
                                 }

                             }
                             binaryNumber[slot1] = 
flipBit(binaryNumber[slot1]);
                             printf("\n");
                         }



}

-- 
André Albergaria Coelho
andrealbergaria@gmail.com


[-- Attachment #2: binPath.c --]
[-- Type: text/x-csrc, Size: 964 bytes --]

#include <stdio.h>

char flipBit(char c);

char flipBit(char c) {
    if (c == '0')
        return '1';
    else 
        return '0';
}
    
int main() {
                        
						char binaryNumber[] = { '0','0','0','0',0 };
						int slot1,slot2,slot3,slot4;


						for (slot1=0 ; slot1 < 2 ; slot1++) {
							printf("\n%s",binaryNumber);
							for (slot2 =1 ; slot2 < 2 ; slot2++) {
								binaryNumber[slot2] = flipBit(binaryNumber[slot2]);
								
								printf("\n%s",binaryNumber);

								for (slot3=2 ; slot3 < 3 ; slot3++) {
									binaryNumber[slot3] = flipBit(binaryNumber[slot3]);
                                    printf("\n%s",binaryNumber);


									for (slot4=3 ; slot4 < 4 ; slot4++) {
										binaryNumber[slot4] = flipBit(binaryNumber[slot4]);
										printf("\n%s",binaryNumber);
									}
								}

							}
							binaryNumber[slot1] = flipBit(binaryNumber[slot1]);
                            printf("\n");
						}
}

[-- Attachment #3: binPath.java --]
[-- Type: text/x-java, Size: 1585 bytes --]

import java.io.UnsupportedEncodingException;
import java.util.Arrays;


public class binPath {

	// ao inves de se usar o numero , usas a posicao dele na posicao do  numero (na array)
	// ao inves de se usar o sistema de numeros (cada posicao ocupa um elemento vezes a base)
	
	 
		
		public static void main(String[] args) {
		 
					byte[] plaintext = {0,0,0,1,1,1,0,1};
					
					
					
					// prints bits and positions
					/*byte[] b = {0,0,0,0,0,0,0,0};
					byte[] b2 = {1,1,1,1,1,1,1,1};
					
				
					for (int pos=0; pos < 8; pos++) {
						System.out.println("position "+pos+" "+b[pos]);
						System.out.println("position "+pos+" "+b2[pos]);
					}
					*/
					byte[] t = { 0,0,0,0 };
					
					
					
					for (int slot1 = 0 ; slot1 < 2 ; slot1++) {
						System.out.println();
						System.out.print(Arrays.toString(t));
						for (int slot2 = 1; slot2 < 2 ; slot2++) {
							t[slot2] = bitFlip(t[slot2]);
							System.out.println();
							System.out.print(Arrays.toString(t));
							
							for (int slot3 = 2; slot3 < 3 ; slot3++) {
								t[slot3] = bitFlip(t[slot3]);
								System.out.println();
								System.out.print(Arrays.toString(t));
								
								for (int slot4=3; slot4 < 4 ; slot4++) {
									t[slot4] = bitFlip(t[slot4]);
									System.out.println();
									System.out.print(Arrays.toString(t));
								}
							}
							
						}
						t[slot1] = bitFlip(t[slot1]);
					}
					
						
		}		
												
			
					
					
	
	// Flips bits
	public static byte bitFlip(byte b) {
		if (b == 0)
			return 1;
		else
			return 0;
		
	}
	
}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, back to index

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-05  0:31 fast binary calculator Andre Coelho

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git
	git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org
	public-inbox-index lkml

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git