首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 原碼、反碼、補碼詳解與 int 轉 byte 負數陷阱分析

     編輯:Java 程式設計入門

定義(以 1 Byte 為例)

編碼正數負數
原碼符號位 0 + 絕對值二進制符號位 1 + 絕對值二進制
反碼同原碼符號位 1,其餘位取反
補碼同原碼反碼 + 1

範例:+7 / -7

+7 原碼: 00000111   反碼: 00000111   補碼: 00000111
-7 原碼: 10000111   反碼: 11111000   補碼: 11111001

補碼轉十進制負數步驟

  1. 各位取反
  2. 轉十進制
  3. 加負號再減 1

例:11111010 → 取反 00000101 (5) → -5 - 1 = -6。

常見陷阱:int 強轉 byte 變負數

int a = 232;        // 二進制: 00000000 00000000 00000000 11101000
byte b = (byte) a;  // 截取低 8 位: 11101000
// 最高位 1 → 負數補碼
// 取反: 00010111 (23) → -23 - 1 = -24
System.out.println(b); // -24

int轉byte示意圖

Java 基本型別皆為有號補碼表示,強轉時直接截取低位,若最高位為 1 則解讀為負數。

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