在 C++ 中表示負值

Mohd Mohtashim Nawaz 2023年1月30日 2022年4月20日
  1. 在 C++ 中表示負值的方法
  2. 在 C++ 中使用位移位的最大幅度的負整數
  3. まとめ
在 C++ 中表示負值

C++ 可以表示正值和負值。本文討論 C++ 如何表示負值。

在 C++ 中表示負值的方法

在 C++ 中沒有表示負值的規則。因此,供應商可以選擇他們的實現細節來表示 C++ 中的負值。

但是,有三種常用的方法來表示負數。

  1. 有符號量級 - 表示有符號數的最少使用方法。在這種方法中,固定一個特殊位來表示數字的符號。

    其餘位表示數字的大小。然而,這種方法在計算機中實現時存在嚴重問題,尤其是在對負數執行算術運算時。

  2. 一個的補碼 - 在這種方法中,負數通過將 0 位轉換為 1 來表示,反之亦然,從相應正數的位表示。

    請記住,最左邊的位代表數字的符號。0 代表正號,1 代表負號。

    但是,這種方法有一個缺陷,即在使用這種方法時,+0 和 -0 有兩種不同的表示形式。

  3. 二進位制補碼 - 這是表示負數的最常用方法。在這種方法中,固定一個符號位來表示符號。

    如果遇到負數,則計算其位表示。之後,位被翻轉,並加 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 位整數表示的結果。

相關文章 - C++ Number