轉載請標明原文地址:https://segmentfault.com/a/11...html
十進制轉二進制:
正整數:除2取餘倒序
負整數:正整數取反+1segmentfault
int = Int32 = 32位有符號整數 內存表示 8位一組 4組 4x8=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
舉例:spa
-5: 00000000 00000000 00000000 00000101 // 5的二進制 11111111 11111111 11111111 11111010 // 取反 11111111 11111111 11111111 11111011 // +1
??!!爲何負整數二進制要取反再加1?爲何不能直接用符號位+正整數二進制表示?
由於計算機只有加法沒有減法 減法也轉成加法算 爲了好計算 就這樣表示了 詳細緣由能夠看下面的文章:
《爲何負數的反碼在取反後還要加一》https://blog.csdn.net/delltdk....net
二進制轉十進制:
正數:2次冪相加code
在二進制數5上 從右往左標上次方0、一、二、3…… 101 ²¹⁰ 位數字x2的次方再相加 1 0 1 = 1 0 1 = 101 1x2² + 0x2¹ + 1x2⁰ = 4 + 0 + 1 = 5
負數:取反加1(或減1取反 效果同樣) 二次冪相加htm
二進制-5: 11111111 11111111 11111111 11111011 // -5 00000000 00000000 00000000 00000100 // 取反 00000000 00000000 00000000 00000101 // +1 101 = 5 加上符號 = -5
測試代碼:blog
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://jingyan.baidu.com/art...教程
轉載請標明原文地址:https://segmentfault.com/a/11...內存