在 C++ 中表示負值
Mohd Mohtashim Nawaz
2023年1月30日
2022年4月20日
C++ 可以表示正值和負值。本文討論 C++ 如何表示負值。
在 C++ 中表示負值的方法
在 C++ 中沒有表示負值的規則。因此,供應商可以選擇他們的實現細節來表示 C++ 中的負值。
但是,有三種常用的方法來表示負數。
-
有符號量級 - 表示有符號數的最少使用方法。在這種方法中,固定一個特殊位來表示數字的符號。
其餘位表示數字的大小。然而,這種方法在計算機中實現時存在嚴重問題,尤其是在對負數執行算術運算時。
-
一個的補碼 - 在這種方法中,負數通過將 0 位轉換為 1 來表示,反之亦然,從相應正數的位表示。
請記住,最左邊的位代表數字的符號。0 代表正號,1 代表負號。
但是,這種方法有一個缺陷,即在使用這種方法時,+0 和 -0 有兩種不同的表示形式。
-
二進位制補碼 - 這是表示負數的最常用方法。在這種方法中,固定一個符號位來表示符號。
如果遇到負數,則計算其位表示。之後,位被翻轉,並加 1。
讓我們看一個例子。
Number: -6 Sign: -ve so sign bit = 1 Bitwise representation of 6: 000110 Two's complement: 111001+1 = 111010 So the number is represented as 1111010
該方法克服了一個人的補碼方法的缺點。
在 C++ 中使用位移位的最大幅度的負整數
你可以通過移位位來獲得整數資料型別的最大值,使除符號位之外的所有位都為 1。
你有一個 8 位整數表示(僅作為示例)。 -1 的表示如下所示。
Number: -1
Sign: -ve so sign bit = 1
Bitwise representation of 1: 000 0001
Two's complement: 111 1110 + 1 = 111 1111
So -1 is represented as 1111 1111.
如果將 -1 左移一位,則其二進位制表示為 0111 1111。
這表示最大數量。你可以通過簡單地反轉位來獲得最小的負數(最小值)。
讓我們看看程式碼。
#include <iostream>
using namespace std;
int getLargest()
{
int num = -1u >> 1;
return num;
}
int getSmallest()
{
int num = -1u >> 1;
num = ~num;
return num;
}
int main()
{
cout<<"Maximum value: "<< getLargest()<<endl;
cout<<"Minimum value:"<< getSmallest()<<endl;
return 0;
}
輸出:
Maximum value: 2147483647
Minimum value:-2147483648
まとめ
你必須注意,整數的最大值和最小值可能因 C++ 編譯器供應商和機器而異。本文中的示例顯示了 32 位整數表示的結果。