当前位置: 首页 > 知识库问答 >
问题:

如何对阵列中存储8位二进制内部进行左循环移位

章博耘
2023-03-14

假设A[i]={202,205}A[202]=11001010A[205]=11000011循环左移输出后应类似于A[202]=10010101A[205]=1000011

for (i = 0; i < s[i].length(); i++) { //loop for computing binary value
    System.out.print(" " + dt[i] + " = " );
    int  g=7;
    while(dt[i]!=0)                             
    {
          bindt[g]=Math.abs((dt[i])%2);
          dt[i]=(dt[i])/2;
          g=g-1;

    }
    for(g=0;g<8;g++)
        System.out.print(bindt[g]); 
    }
}
for(i=0;i<s[i].length();i++)          //loop for circular shift on bits
{
    var=bindt[0];
    for(int index=0;index<8;index++)           
    {
        di[index]=bindt[index+1];
        if(index==7)                    
           di[index]=var;
        } 
    }
}

实际代码为:

    int power = 0,temp;
    int[] a= new int[1000];
    int[] m=new int[1000];
    int[] dt=new int[1000];
    int[] bindt=new int[100];
    int[] ds=new int[1000];
    int[] di=new int[50];
    int[] cov=new int[100];
    int arr[]=new int[10];  
   int var;
    String d = null;
    String e= null;
    int bin[]=new int[8];
    int bink[]=new int[8];
    JFileChooser chooser = new JFileChooser();    //  Browse File
    chooser.showOpenDialog(null);
    File file = chooser.getSelectedFile();
    fileName = file.getPath();
     String fn= file.getName();
     System.out.println("File name is :"+fn);
    FileReader fileReader = new FileReader(fileName);
    BufferedReader br = new BufferedReader(fileReader);
    while ((line = br.readLine()) != null)
    {
        System.out.println(line);
        l = line.length();
        System.out.println("length is " + l);
         System.out.print("Plain Text={");
        while ((br.readLine() != null) || (i <= l))    //computing plain text
        {
            s[i] = line;
             i++;
         }
        //counting no of vowels,consonants,special symbols and spaces
        for (i = 0; i < s[i].length(); i++) {
            char ch = line.charAt(i);
            if (ch=='e'||ch=='a'||ch=='i'||ch=='o'||ch=='u'||ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U')
                vowels++;
            else if (line.charAt(i)==' ')
                spaces++;
            else if   (ch=='>'||ch=='+'||ch=='}'||ch=='/'||ch=='*'||ch=='!'||ch=='@'||ch=='#'||ch=='$'||ch=='%'||
                    ch=='^'||ch=='&'||ch=='('||ch==')'||ch=='"'||ch==':'||ch==';'||
                    ch=='{'||ch=='['||ch==']'||ch=='?'||ch==','||ch=='.'||ch=='<')
                      ss++; 
            else
                consonants++; 
            ascii = (int) ch;
            a[i] = ascii;
            System.out.print(+a[i]+",");
        }
        System.out.print("}");
        System.out.print("\n");
        System.out.print("Static text={");
        for (i = 0; i < s[i].length(); i++) {
            m[i]=(254 - ((a[i]) - (14)));             //Generating static text
                            System.out.print( + m[i]+",");
        }
        System.out.print("}");
        System.out.print("\n");            
        System.out.println("X=number of vowels = "+vowels);
        System.out.println("W=number of consonants = "+consonants);
        System.out.println("Z=number of special symbols = "+ss);
        System.out.println("Y=number of spaces = "+spaces);
        System.out.println("N=Total number of characters = "+l);
        Denominator = ((l-consonants)+(l-vowels)+(l-spaces)+(l-ss));
        System.out.println("Denominator is :"+Denominator);
         System.out.print("Binary Value is: ");
         j=7;
                //loop for finding binary number
                while(l!=0)                            // binary number computation
                          {
                             bin[j]=Math.abs(l%2);
                             l=l/2;
                             j=j-1;
                        }
                        for(j=0;j<8;j++)
                              System.out.print(bin[j]);
                       // loop for obtaining 1's complement          
                        for(j=0;j<8;j++)                                        
                             {
                                if(bin[j]==1)
                                     bin[j]=0;
                                else
                                    bin[j]=1;
                             }
                            System.out.print("\n");
                            System.out.println("Complemented value:")
                            d=Arrays.toString(bin).trim().replace(",","").replace("[","").replace("]","").replace(" ","").trim();
                            System.out.println(d);
                            System.out.print("Numerator: ");
                            Numerator = Integer.parseInt(d,2);       //Computing k value
                            System.out.println(Numerator);
                            k=((Numerator)/(Denominator));
                            System.out.println("K =" +k);
                            System.out.print("Dynamic Text:{");   //Generating dynamic text
                            for (i = 0; i < s[i].length(); i++) 
                            {
                            dt[i]=((m[i])+(k));
                            System.out.print( + dt[i]+",");
                             }
                            z=7;
                            while(k!=0)                             
                          {
                             bink[z]=Math.abs(k%2);
                             k=k/2;
                             z=z-1;
                          }
                            System.out.println("}");
                            System.out.println("Binary Value of k is: ");
                             for(z=0;z<8;z++)
                              System.out.print(bink[z]); 
                               }
                            System.out.println("ASCII Values of Dynamic Text is:");
                            for (int h = 0; h < s[i].length(); h++)      //loop for computing binary value
                            {
                           System.out.print(" " + dt[h] + " = " );
                             int  g=7;
                             while(dt[h]!=0)  {
                              bindt[g]=(Math.abs((dt[h])%2));
                               dt[h]=(dt[h])/2;
                             g=g-1;
                              }

>

  • 列表项

                    }
                            for(g=0;g<8;g++)
    
                              System.out.print(bindt[g]);                               
                            }
               }
               for(int h=0;h<s[i].length();h++)          //loop for circular shift 
                            {
                  for(int index=0;index<8;index++)           
                        {
                            di[index]=bindt[index+1];
                               if(index==7)                    
                                      di[index]=bindt[0];
                              } 
                              }
    
  • 共有1个答案

    杨彦君
    2023-03-14

    构建了一个测试应用程序来创建一个Java方法,该方法将长度为8的int数组中的位以圆形模式向左移动一位。

    这是测试结果。

    [1, 1, 0, 0, 1, 0, 1, 0] -> [1, 0, 0, 1, 0, 1, 0, 1]
    [1, 1, 0, 0, 0, 0, 1, 1] -> [1, 0, 0, 0, 0, 1, 1, 1]
    [0, 0, 0, 0, 0, 0, 1, 1] -> [0, 0, 0, 0, 0, 1, 1, 0]
    

    如您所见,位向左移动一位,最左边的位向右移动。

    package com.ggl.testing;
    
    import java.util.Arrays;
    
    public class BitShifting {
    
        public static void main(String[] args) {
            BitShifting bitShifting = new BitShifting();
    
            int[] bits1 = { 1, 1, 0, 0, 1, 0, 1, 0 };
            shiftAndDisplay(bitShifting, bits1);
            int[] bits2 = { 1, 1, 0, 0, 0, 0, 1, 1 };
            shiftAndDisplay(bitShifting, bits2);
            int[] bits3 = { 0, 0, 0, 0, 0, 0, 1, 1 };
            shiftAndDisplay(bitShifting, bits3);
        }
    
        private static void shiftAndDisplay(BitShifting bitShifting, int[] bits) {
            int[] shifted = bitShifting.shiftLeft(bits);
            System.out.print(Arrays.toString(bits));
            System.out.print(" -> ");
            System.out.println(Arrays.toString(shifted));
        }
    
        public int[] shiftLeft(int[] bits) {
            int bit = bits[0];
            int length = bits.length - 1;
            int[] output = new int[bits.length];
    
            for (int i = 0; i < length; i++) {
                output[i] = bits[i + 1];
            }
    
            output[length] = bit;
    
            return output;
        }
    
    }
    
     类似资料:
    • 我必须编写一个函数,对y位置的位进行左循环移位。例如,如果我将:01011000和2作为y,则函数必须返回011000001。 我已经尝试使用但它似乎是无用的。

    • 本文向大家介绍python实现整数的二进制循环移位,包括了python实现整数的二进制循环移位的使用技巧和注意事项,需要的朋友参考一下 题目:如何在python中实现整数的二进制循环移位? 概述 在python中,可以通过<<以及>>运算符实现二进制的左移位以及右移位,然而并没有实现循环移位的运算符,暂时也找不到可以实现循环移位的函数,所以在本文中,主要介绍了如何使用字符的切片运算实现循环位移。

    • 5、带进位的循环移位指令 带进位的循环移位指令有:带进位的循环左移RCL(Rotate Left Through Carry)和带进位的循环右移RCR(Rotate Right)。 指令的格式:RCL/RCR Reg/Mem, CL/Imm 受影响的标志位:CF和OF 带进位的循环左移/右移指令只有移位的方向不同,它们都用原CF的值填补空出的位,移出的位再进入CF。具体功能如下图(a)、(b)所示

    • 我编写了简单的java代码将十进制转换为8位二进制:很抱歉这个愚蠢的问题 //int j=8-结果。长度();//对于(int i=0;i 结果是:dec长度为:1****反转前8位:10000 8位表示:00001 但当我删除第13行时(结果=0;)编译器打印7星号(*),原因是什么?每次都会更新结果的长度

    • 问题内容: 如标题所示,JavaScript中有一个特定的运算符。例如,在JavaScript中,我们将得到以下结果: 那么是否有某种方法或运算符来表示呢? 问题答案: 没有内置的运算符,但是您可以轻松地模拟自己: 以下替代实现消除了对的需要:

    • 问题内容: 我建立与工作流 Gitlab , 詹金斯 和-也许- 的Nexus (我需要一个工件存储装置)。我想让GitLab存储 发行版/二进制文件 -是否可以方便地进行? 我不想有另一个可以从中下载版本(和文档)的服务,但是希望以某种方式将其与存储库管理器集成在一起,就像在GitHub中处理版本一样。有什么线索吗? 问题答案: 2015年11月更新:GitLab 8.2现在支持发行版 。 借助