给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
注意:
十六进制中所有字母(a-f)都必须是小写。
十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。
给定的数确保在32位有符号整数范围内。
不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。
示例 1:
输入:26 输出:"1a"
示例 2:
输入:-1 输出:"ffffffff"
class Solution {
public String toHex(int num) {
char[] hex = "0123456789abcdef".toCharArray();
StringBuilder sb = new StringBuilder();
if (num == 0) sb.append("0");
while (num != 0) {
int temp = num & 15;
sb.append(hex[temp]);
num = num >>> 4;
}
return sb.reverse().toString();
}
}
1.计算机中原码、反码、补码
2.Java中的<< 和 >> 和 >>> 区别
计算机存数字、字符:
数字:正数、负数, 整数、浮点数
字符:ASCII码、Unicode码
1. 计算机如何存储正数与负数,及其如何+ -运算?
2. 计算机如何存储整数、浮点数?
3. 计算机如何存储不同字符(英文字符、中文字符、其他国家字符)?
4. 计算机如何判断是字符还是数字,即二进制 → 数字 , 二进制 → Unicode解码为字符?
例如C的asc码是43H,存储在内存单元里,计算机是怎么判断是asc码还是43H这个数值的?
答:计算机不负责自动判断,如何判断交由程序本身(说白了就是你自己)。
编程时候的“数据类型”就是告诉了计算机各个内存块该如何解释(如int规定了43H是个整数,char规定了43H是个字符)