关于进制转换
进制转换的规则是按权展开、除基取余,实际使用中最容易出错的是前缀与位宽。十六进制写作 0xFF 或 FF,0x 只是进制标记而不是数值的一部分;二进制常写 0b1010;八进制在不少语言里用前导 0 表示,于是 010 在 C 里等于十进制 8,在 JSON 里则直接是语法错误。位运算场景还要注意位宽:8 位无符号最大 255,32 位最大 4294967295;负数在计算机里用补码表示,-1 的 32 位补码是全 1,写成十六进制就是 FFFFFFFF。颜色、权限位、协议字段、内存地址分别习惯用十六进制、八进制和二进制表示,进制选错会让数值整体差一个量级。
进制转换怎么用
- 在进制选择里指定输入文本的进制(2、8、10 或 16),进制选错结果一定错。
- 粘贴数值,十六进制可带 0x 前缀,也可以只写数字与 A–F。
- 勾选要输出的目标进制,可同时查看二进制、八进制、十进制、十六进制结果。
- 核对位数与大小写,十六进制默认大写便于比对,二进制按 4 位一组对齐更易读。
- 对负数或超过 32 位的数值,单独确认是否按补码与位宽处理。
使用提示
- 1 位十六进制等于 4 位二进制(0xF 就是 1111),换算时先按 4 位分组再补零,比逐位手算快且不容易错。
- 前导 0 在不同语言里含义不同:C、C++ 与老版 Java 视为八进制,Python 3 与 JSON 里是非法写法,跨语言复制字面量时改成 0o 或直接去掉前导零。
- 浮点数没有精确的二进制表示,0.1 在二进制里是无限循环小数,这类转换只对整数精确,小数部分必须事先约定保留几位。
进制转换常见问题
十六进制 0xFF 是多少
0xFF 等于十进制 255,也就是二进制 11111111。十六进制每一位权重是 16 的幂,F 表示 15,所以 15×16 + 15 = 255,前缀 0x 只是进制标记。8 位无符号整数的最大值正好是 FF,所以 255 是常见的溢出边界。
二进制 1010 转十进制怎么算
按权展开相加:1×2³ + 0×2² + 1×2¹ + 0×2⁰ = 8 + 0 + 2 + 0 = 10。二进制每位权重从右往左依次是 1、2、4、8、16。也可以用 4 位一组转十六进制的捷径,1010 一组就是 A,即十进制 10。
负数怎么用十六进制表示
现代计算机用补码:-1 的 32 位补码是全 1,写成 0xFFFFFFFF,-2 是 0xFFFFFFFE。算法是取绝对值二进制、按位取反再加 1。位宽不同结果不同,8 位下 -1 是 0xFF,不能和 32 位的写法混用。
八进制 010 为什么和十进制不一样
因为前导 0 在 C、C++ 和老版 Java 里是八进制标记,010 等于十进制 8 而不是 10。Python 3 和 JSON 不允许这种写法,八进制要写成 0o10。要表示十进制就正常写 10,别加前导零。