Je fréquente la faculté d'informatique d'une certaine université nationale et, récemment, j'utilise fréquemment des nombres binaires dans des expériences liées aux sciences de l'information. Dans l'expérience, le circuit logique conçu a été envoyé à quelque chose comme une carte avec un circuit intégré appelé FPGA, et c'était comme un étudiant universitaire comme un élève du primaire comme "J'ai fait 1 plus 1". Je fais ça. Je ne sais pas ce que cela signifie, mais c'est intéressant car les nombres binaires signés peuvent être des nombres négatifs en ajoutant des nombres positifs et des nombres positifs. Cependant, je suis habitué aux nombres décimaux depuis 20 ans, et je pense essentiellement aux choses en nombres décimaux. Mon cerveau n'est pas Kamen Rider Zero One. (Je ne sais pas car je n'ai pas vu le vrai Kamen Rider) Comme prévu, il est possible de convertir entre des nombres décimaux et binaires jusqu'à 5 à 6 chiffres par calcul secret, mais si le nombre de chiffres dépasse cela, utilisez un ordinateur ou effectuez un calcul manuel. Dans cet article, j'ai découvert un programme de conversion décimal-binaire que j'ai créé il y a longtemps lorsque je cherchais un vieil ordinateur récemment, alors je voudrais le présenter.
Cette fois, je l'ai écrit en java. Quand j'étais en première année à l'université, je ne parlais que de java, donc je croyais qu'il n'y avait que du japonais, de l'anglais et du java dans ce monde. C'est un moment où je ne suis pas encore habitué à la programmation, donc je pense avoir beaucoup de choses à dire sur le design et le codage, mais j'espère que vous pourrez le voir avec un œil chaleureux comme si vous regardiez la croissance de vos petits-enfants mignons. Collez-le tel quel sans aucune modification.
binary_change.java
import java.util.Stack;
import java.util.*;
class binary_change{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Input number.");
int inputnum = sc.nextInt();
transrate(inputnum);
}
public static void transrate(int num){
final int numnumnum = num;
Stack stack = new Stack();
int stacksize = 0;
stacksize = stack.size();
int numnum = 1;
do{
numnum = numnum * 2;
stacksize ++;
}while(numnum < num);
System.out.println("stacksize is " + stacksize);
int nextnum1;
int nextnum2;
int surplus;
int surplus1;
int surplus2;
surplus = num % 2;
System.out.println("2 )" + num + "..." + surplus);
System.out.println("----------");
stack.push(surplus);
do{
nextnum1 = num / 2;
surplus1 = num % 2;
if (nextnum1 == 1) {
break;
}
num = nextnum1;
nextnum2 = num / 2;
surplus2 = num % 2;
System.out.println("2 )" + nextnum1 + "..." + surplus2);
System.out.println("----------");
stack.push(surplus2);
if (nextnum2 == 1) {
System.out.println("2 )" + nextnum2);
stack.push(nextnum2);
break;
}
}while (true);
System.out.println("Deciminal number ---> Binary number");
System.out.print(numnumnum + " ---> ");
for (int i = 0; i < stacksize; i ++) {
System.out.print(stack.pop());
}
System.out.println(" ");
}
}
Même si je n'écris généralement pas du tout en java, je peux comprendre ce code ou cette farce après 3 ans de croissance. Mais quand j'y pense attentivement, je pense que j'avais l'habitude d'écrire de tels programmes de type outil dans Gamshala. Je pense que ce genre d'accumulation est vraiment important.
Maintenant, essayons de voir comment il se comporte.
takeshitatakushuunoMacBook-ea:Desktop hirosugutakeshita$ java binary_change
Input number.
810
stacksize is 10
2 )810...0
----------
2 )405...1
----------
2 )202...0
----------
2 )101...1
----------
2 )50...0
----------
2 )25...1
----------
2 )12...0
----------
2 )6...0
----------
2 )3...1
----------
2 )1
Deciminal number ---> Binary number
810 ---> 1100101010
takeshitatakushuunoMacBook-ea:Desktop hirosugutakeshita$
Comme vous pouvez le voir sur le résultat, ce type calcule la conversion à la main, même s'il s'agit d'un ordinateur.
Il existe deux méthodes, la partie principale et la partie conversion. Presque tous les calculs sont effectués dans transrate ()
. La méthode principale prend juste une valeur et donne un argument.
J'expliquerai aussi brièvement le contenu de transrate ()
.
Je le regarde toujours, mais c'est vraiment comme une écriture manuscrite.
Divisez par 2 et divisez en quotient et reste, et le reste est empilé dans la pile. Enregistrez le quotient dans une variable pour le prochain calcul.
Après cela, je produis le quotient et le reste dans un endroit agréable pour qu'il ressemble à un calcul de pinceau, et je continue jusqu'à ce que le dernier quotient devienne 1.
Il s'agissait de lire le nombre d'excédents (0 ou 1 cette fois) dans le calcul d'écriture de la conversion binaire (comme c'est le cas avec d'autres conversions de base). Je pense que cela a été écrit dans le manuel de mathématiques. Par conséquent, je pense que c'est une idée de sélectionner la pile pour la structure de données à utiliser. Puisque les valeurs sont sorties dans l'ordre inverse de l'empilement, c'est la même chose que la lecture car la partie restante de l'écriture est effectuée.
Je ne pense pas que j'appelle cela un "algorithme", mais je pense que c'est assez intéressant car il se convertit en binaire sans utiliser la bibliothèque de calcul de conversion qui existe probablement si vous le recherchez. Veuillez utiliser cet outil lorsque l'on vous pose environ 100 questions pour convertir en binaire en utilisant le calcul du pinceau.
Je trouve parfois intéressant de voir d'anciens programmes. En plus de ressentir ma propre croissance, j'ai également trouvé qu'il serait difficile de lire si je l'écrivais comme ça. Parfois, je pensais que ce serait bien de faire ça. (Extrêmement lâche)