58.数字转换为十六进制数-LeetCode-Java

给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。

注意:
十六进制中所有字母(a-f)都必须是小写。
十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 
给定的数确保在32位有符号整数范围内。
不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。

示例 1:
输入:26 输出:"1a"

示例 2:
输入:-1 输出:"ffffffff"
/**
 * 计算机 有符号数有三种表示方法 原码、反码和补码
 * 正数的补码是其本身,负数的补码是其反码+1
 * 计算机中 正数、负数都是以补码形式存储的
 * 1=00000001
 * -1=FFFFFFFF
 * 思路:将num和1111与操作,获取每一位后无符号右移动4位
 */
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是个字符)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值