1.
第一种:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
toUnsignedString(n);
}
final static char[] digits = {'0' , '1'};
/**获取原码方法,int类型32位
*/
private static void toUnsignedString(int value) {
StringBuilder sb = new StringBuilder();
int i = 32;
int j = value;
do {
if (j >= 0) {
sb.insert(0, digits[j % 2]);
}
else {
break;//因为小于0,所以得出的数值为负数,加上负号转为正数 负数以补码的形式存在
}
j /= 2;
i--;
// System.out.println(i);
//System.out.println(sb);
} while (i > 0);
int x = 0;
//格式处理一下
if(value < 0) {
System.out.println(0);
return;
}
for (int i1 = 0; i1 < 32; i1++) {
if (sb.charAt(i1) == '1'){
System.out.println(i1);
return;
}
}
System.out.println(32);
}
}
第二种:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
binaryToDecimal(n);
}
/**将10进制转为2进制字符串
*/
private static void binaryToDecimal(int num) {
StringBuilder sb = new StringBuilder();
sb.append(Integer.toBinaryString(num));//是有jdk自带方法转为二进制
int length = sb.length();
for (int i = 0; i < 32 - length; i++) {//补齐32位
sb.insert(0, 0);
}
for (int i = 0; i < 32; i++) {
if (sb.charAt(i) == '1') {
System.out.println(i);
return;
}
}
System.out.println(32);
}
}
第三种:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int x=32,num;
num=in.nextInt();
if(num>=0)
{
while(num>0)//大于零每除以2,位数减一,0则直接为32
{
x--;
num=num/2;
}
System.out.println(x);
}
if(num<0)//小于零补码,无先导0
{
System.out.println(0);
}
in.close();
}
}
小结:在计算机中,负数以原码的补码形式表达。最高位(符号位)为1。
一个负数,按照其绝对值大小转换成的二进制数,最高位补1,称为负数的原码。原码除最高位外,其他位取反,成为负数的反码。
反码加1,则为补码。
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.next();
StringBuilder str2 = new StringBuilder(str1).reverse();
int length = str1.length();
for (int i = 0; i < length; i++) {
if (str1.charAt(i) != str2.charAt(i)) {
System.out.println(length);
System.out.println("N");
return;
}
}
System.out.println(length);
System.out.println("Y");
}
}
注:StringBuilder str2 = new StringBuilder(str1).reverse();
第一种:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
char[] chars = str1.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] > '0' && chars[i] <= '9'){
chars[i] = '0';
}
}
for (int i = chars.length - 1; i >= 0; i--) {
if (chars[i] != '0') {
System.out.printf(String.valueOf(chars[i]));
}
}
}
}
第二种:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
int k = 0, m = 0;
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) >= '0' && str1.charAt(i) <= '9') {
k++;
}
}
char[] chars = new char[str1.length()-k];
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) < '0' || str1.charAt(i) > '9'){
chars[m++] = str1.charAt(i);
}
}
String s = String.valueOf(chars);
StringBuilder str2 = new StringBuilder(s).reverse();
System.out.println(str2.toString());
}
}
第三种:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
ArrayList<Character> ac = new ArrayList<>();
int m = 0;
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) < '0' || str1.charAt(i) > '9'){
ac.add(str1.charAt(i));
}
}
for (int i = ac.size()-1; i >= 0; i--) {
System.out.printf(ac.get(i).toString());
}
}
}