為什麼byte取值-128~127??
java設計byte型別為1個位元組,1個位元組佔8位,即8bit,這是常識。
另外,計算機系統中是用補碼來儲存的,首位為0表示正數,首位為1表示負數,所以有以下結論:
最大的補碼用二進位制表示為:01111111 = 127
最小的補碼用二進位制表示為:10000000 = -128
關於補碼、原碼、反碼的計算原理可以百度。
Byte的原始碼:
/**
* A constant holding the minimum value a {@code byte} can
* have, -2<sup>7</sup>.
*/
public static final byte MIN_VALUE = -128;
/**
* A constant holding the maximum value a {@code byte} can
* have, 2<sup>7</sup>-1.
*/
public static final byte MAX_VALUE = 127;
7是最高位,總共8bit,可以看出byte佔1個位元組,即8/8=1。
Integer原始碼:
/**
* A constant holding the minimum value an {@code int} can
* have, -2<sup>31</sup>.
*/
public static final int MIN_VALUE = 0x80000000;
/**
* A constant holding the maximum value an {@code int} can
* have, 2<sup>31</sup>-1.
*/
public static final int MAX_VALUE = 0x7fffffff;
31是最高位,總共32bit,可以看出int佔4個位元組,即32/8=4。
其他Short、Long的設計原理也一樣。
相關文章
- 為什麼int8的範圍是[-128,127]
- int 8 佔一個位元組,為什麼範圍是-128 到 127?
- byte轉16進位制String時為什麼要乘上0xff
- 為什麼沒有普及128位操縱系統的計算機?計算機
- 為什麼魂鬥羅只有128KB卻可以實現那麼長的劇情?
- Bit、Byte、kb、KB、MB、KiB、MiB各表示什麼意思?
- 檢查字串的byte[]是什麼編碼字符集字串
- 什麼是前端開發領域中的 time to first byte 指標前端指標
- Java 中將 Short 轉換為 byte[]Java
- Integer128==128?falseFalse
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- 為什麼 [] == ![] 為 true?
- (byte)1658385462>>16=-40,怎麼算的?
- 【基礎語法】short、int、long轉為byte
- Solidity String轉byte32 byte轉StringSolid
- 什麼是Docker?為什麼使用docker?Docker
- GC是什麼?為什麼要有GC?GC
- 為什麼要用Redis?Redis為什麼這麼快?(來自知乎)Redis
- 因果迷境:為什麼我們會問“為什麼”?
- Python是什麼?為什麼這麼搶手?Python
- python有什麼特性?為什麼這麼火?Python
- 人是什麼?人生是什麼?人為什麼會變?
- ITAM是什麼?為什麼它很重要?
- heredoc是什麼?它能為PHP做什麼?PHP
- Python是什麼?為什麼要掌握python?Python
- Elasticsearch:是什麼?你為什麼需要他?Elasticsearch
- TypeScript是什麼,為什麼要使用它?TypeScript
- 什麼是HSTS,為什麼要使用它?
- Python能幹什麼?為什麼會火?Python
- 什麼是Nginx?Linux為什麼使用Nginx?NginxLinux
- redis為什麼快Redis
- 為什麼反射慢?反射
- 為什麼停用CentOS?CentOS
- 我為什麼要做IT
- Kafka 為什麼快Kafka
- 為什麼要用dockerDocker
- 為什麼要用docker?Docker
- 為什麼需要Docker?Docker