转载请标明原文地址:https://segmentfault.com/a/11…
十进制转二进制:正整数:除 2 取余倒序负整数:正整数取反 +1
int = Int32 = 32 位有符号整数
内存表示 8 位一组 4 组 4×8=32
↓首位表示正负 0 = 正 1 = 负
00000000 00000000 00000000 00000000
最多可以表示 2³² = 4294967296
表示整数范围: -2147483648 ~ 2147483647 (负数比正数多 1 因为 0 占了 1 个数字)
正整数转二进制:除 2 取余倒序举例:
5:
5 ÷ 2 = 2 …… 1
2 ÷ 2 = 1 …… 0
1 ÷ 2 = 0 …… 1
除 2 除到整数为 0 把余数倒序排列 5 = 101
负整数转二进制:正整数转二进制 取反 + 1 举例:
-5:
00000000 00000000 00000000 00000101 // 5 的二进制
11111111 11111111 11111111 11111010 // 取反
11111111 11111111 11111111 11111011 // +1
??!!为什么负整数二进制要取反再加 1?为什么不能直接用符号位 + 正整数二进制表示?因为计算机只有加法没有减法 减法也转成加法算 为了好计算 就这样表示了 详细原因可以看下面的文章:《为什么负数的反码在取反后还要加一》https://blog.csdn.net/delltdk…
二进制转十进制:正数:2 次幂相加负数:取反 +1 二次幂相加
在二进制数上 从右往左标上次方 0、1、2、3……
101
²¹⁰
位数字 x2 的次方再相加
1 0 1 = 1 0 1 = 101
1×2² + 0x2¹ + 1×2⁰ = 4 + 0 + 1 = 5
测试代码:
using UnityEngine;
using System;
/// <summary>
/// 十进制转二进制测试
/// ZhangYu 2019-04-19
/// </summary>
public class ConvertTest : MonoBehaviour {
private static void Test() {
// 正整数
print(” 1 = ” + Convert.ToString(1, 2)); // 1 = 00000000 00000000 00000000 00000001
print(” 2 = ” + Convert.ToString(2, 2)); // 2 = 00000000 00000000 00000000 00000010
print(” 3 = ” + Convert.ToString(3, 2)); // 3 = 00000000 00000000 00000000 00000011
print(” 4 = ” + Convert.ToString(4, 2)); // 4 = 00000000 00000000 00000000 00000100
print(” 5 = ” + Convert.ToString(5, 2)); // 5 = 00000000 00000000 00000000 00000101
// 负整数
print(“-1 = ” + Convert.ToString(-1, 2)); // -1 = 11111111 11111111 11111111 11111111
print(“-2 = ” + Convert.ToString(-2, 2)); // -2 = 11111111 11111111 11111111 11111110
print(“-3 = ” + Convert.ToString(-3, 2)); // -3 = 11111111 11111111 11111111 11111101
print(“-4 = ” + Convert.ToString(-4, 2)); // -4 = 11111111 11111111 11111111 11111100
print(“-5 = ” + Convert.ToString(-5, 2)); // -5 = 11111111 11111111 11111111 11111011
// 极值
print(int.MaxValue + “=” + Convert.ToString(int.MaxValue, 2)); // 2147483647 = 01111111 11111111 11111111 11111111
print(int.MinValue + “=” + Convert.ToString(int.MinValue, 2)); // -2147483648 = 10000000 00000000 00000000 00000000
}
}
转载请标明原文地址:https://segmentfault.com/a/11…