首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL TINYINT 數據類型取值範圍深度解析

     編輯:MySQL 資料庫相關知識

TINYINT 基礎存儲特性

在 MySQL 的數值類型體系中,TINYINT 佔用 1 個字節(8 位元)的存儲空間。根據是否帶符號,其取值範圍存在顯著差異:

  • 帶符號:-128 到 127
  • 無符號:0 到 255

這些數值並非隨意設定,而是基於二進制位運算的基本原理推導而來。參考 MySQL 5.1 官方參考手冊。

無符號 TINYINT 範圍推導

無符號情況下,所有 8 位元均用於表示數值大小:

  • 最小值:8 位元全為 0 → 00000000 → 十進制 0
  • 最大值:8 位元全為 1 → 11111111 → 十進制 255

這部分邏輯直觀易懂,無需複雜轉換。

帶符號 TINYINT 的補碼機制

帶符號整數在計算機中採用補碼表示法,最高位作為符號位(0 表正,1 表負)。若按原碼邏輯推算:

  • 最大值:01111111 = +127
  • 最小值:11111111 = -127(原碼邏輯)

但實際最小值卻是 -128,這背後涉及補碼體系的精妙設計。

為什麼是 -128 而非 -127?

在補碼體系中,「-0」與「+0」的補碼表示不同,會導致兩個編碼對應同一數值(0)的浪費。為實現編碼與數值一一映射,規定 0 唯一用「+0」表示(00000000)。

原本對應「-0」的編碼 10000000 便被「人為規定」代表 -128,從而充分利用所有 256 種編碼組合。這就是帶符號 TINYINT 範圍為 -128~127 的根本原因。

總結

理解補碼機制不僅能釐清 TINYINT 範圍由來,更是掌握計算機整數存儲本質的關鍵。MySQL 遵循此標準,確保存儲效率與數值表示的完備性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved