把一个数M转为N进制用Java实现
时间: 2024-04-29 22:23:24 浏览: 17
以下是Java实现将一个数M转为N进制的代码:
```java
public static String convert(int M, int N) {
if (M == 0) {
return "0";
}
String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String result = "";
while (M > 0) {
int digit = M % N;
result = digits.charAt(digit) + result;
M = M / N;
}
return result;
}
```
该方法接受两个整数M和N作为输入,将M转换为N进制,并返回转换后的结果。具体实现步骤如下:
1. 如果M等于0,直接返回字符串"0",因为0在任何进制下都是"0"。
2. 定义一个包含0到N-1的数字和A到Z的字母的字符串,用来表示N进制下的每个数字。
3. 创建一个空字符串result,用来存储转换后的结果。
4. 用循环将M转换为N进制,每次取M除以N的余数,并将对应的数字或字母添加到result的前面。
5. 将M除以N,并将结果赋值给M,继续循环直到M等于0。
6. 返回result。
例如,将十进制数42转换为二进制,调用convert(42, 2),将返回字符串"101010"。
相关问题
c语言怎么把一个数转为二进制
要将一个十进制数转换为二进制,可以使用以下步骤:
1. 定义一个整数变量,用于存储十进制数。
2. 使用 `scanf` 函数从用户输入中读取十进制数,并将其存储在变量中。
3. 定义一个字符数组,用于存储二进制表示形式。
4. 使用循环和位运算操作将十进制数转换为二进制数。
5. 将二进制数存储在字符数组中。
6. 打印输出二进制表示形式。
以下是一个示例代码:
```c
#include <stdio.h>
int main() {
int decimalNum;
printf("请输入一个十进制数: ");
scanf("%d", &decimalNum);
char binaryNum[32]; // 假设最多支持32位二进制数
int i = 0;
while (decimalNum > 0) {
binaryNum[i] = decimalNum % 2 + '0'; // 取余并转换为字符 '0' 或 '1'
decimalNum = decimalNum / 2;
i++;
}
printf("转换为二进制: ");
for (int j = i - 1; j >= 0; j--) {
printf("%c", binaryNum[j]);
}
return 0;
}
```
在此示例中,我们首先从用户输入中读取一个十进制数。然后,我们使用循环和位运算操作将其转换为二进制,并将结果存储在字符数组中。最后,我们打印输出二进制表示形式。请注意,此代码仅支持正整数。如果要支持负数或更大的数字范围,请进行适当的修改。
提供一个经纬度转为十进制的java代码
以下是一个将经纬度转换为十进制的Java代码示例:
```
public static double convertToDecimal(double degrees, double minutes, double seconds, String direction) {
double decimal = degrees + (minutes / 60) + (seconds / 3600);
if (direction.equals("S") || direction.equals("W")) {
decimal = -decimal;
}
return decimal;
}
// 示例用法:
double latitude = convertToDecimal(37, 48, 35.71, "N");
double longitude = convertToDecimal(122, 25, 9.28, "W");
System.out.println("Latitude: " + latitude);
System.out.println("Longitude: " + longitude);
```
其中,`convertToDecimal` 方法接收经纬度的度、分、秒以及方向作为参数,返回对应的十进制值。方向参数为字符串类型,可传入 "N"、"S"、"E" 和 "W" 中的任意一个。如果是南纬或西经,则将计算出的十进制值取反。最后,示例代码将经纬度转换为十进制并打印输出。