C 程式。設整數42486,如果將其定義為無符號短整數,當以有符號數輸出時,結果是什麼?請用補碼解釋

時間 2021-05-23 04:10:12

1樓:匿名使用者

42486(10) = 1010010111110110(2) unsigned

1010010111110110(2) signed = -(101101000001001+1)(2)

= -23050(10)

-----------

(1)正數的補碼:與原碼相同。 例如,+9的補碼是00001001。

(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。 例如,-7的補碼:

因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼0000111按位取反為1111000;再加1,所以-7的補碼是11111001。

已知一個數的補碼,求原碼的操作分兩種情況:

(1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼。

(2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取反,然後再整個數加1。 例如,已知一個補碼為11111001,則原碼是10000111(-7):

因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」;其餘7位1111001取反後為0000110;再加1,所以是10000111。

-----------

lz很不厚道耶....你的題目明明問的是"結果是什麼?",又不要結果....

你要的是什麼程式?

輸出的程式嗎?

2樓:溺於舊聞中

你的問題補充有問題,無符號短整型的範圍是:0-65535,有符號短整型的範圍才是:-32768-+32767,注意改正哦。具體問題的解答見二樓,他是對的!

3樓:車草子

很巧 我也在做這個程式

因為溢位問題

所以會輸出42486的補碼-23050

#include "iostream"

using namespace std;

void unsigned(unsigned short int x)

void signed(unsigned short int x)int main(){

cout<<"the numeber is 42486"<

signed(42486); //因為溢位,所以輸出的為42486的補碼-23050//

unsigned(42486);

return 0;

c++語言中以無符號的十進位制形式輸出整數是什麼意思

4樓:戴雨城

就是沒copy

有正負,在c++的形式是unsigned int。

正常的數儲存時是把這個數的在機器記憶體裡的最高位存成符號位,比如:

int:0||0000000 00000000 00000000 00000001

符號||數

如果沒有符號就是全是數

新手解惑。在c語言中,為什麼用%u而不能用%d輸出無符號型別整數的最大值?(如uint–max?)

5樓:匿名使用者

%u 輸出無符號數

%d 輸出有符號數

所以,要想看到無符號資料,則要使用%u

8位二進位制所能表示的無符號整數和帶符號整數的範圍是多少?

6樓:蟈蟈蟈蟈

8位二進位制所能表示的無符號整數範圍為0~255;8位二進位制所能表示的帶符號整數範圍為-128~127。

無符號整數與帶符號整數:

一、無符號整數

無符號數(unsigned number)是相對於有符號數而言的,指的是整個機器字長的全部二進位制位均表示數值位,相當於數的絕對值。

用二進位制數的最高位表示符號,最高位是0,表示正數,最高位是1,表示負數。這種說法本身沒錯,可是如果沒有下文,那麼它就是錯的。至少它不能解釋,為什麼字元型別的-1用二進位制表示是「1111 1111」(16進製為ff);而不是我們更能理解的「1000 0001」。

二、帶符號整數

有符號整數可表示正整數、0和負整數值。其二進位制編碼方式包含 符號位 和 真值域。 我們以8bit的儲存空間為例,最左1bit為符號位,而其餘7bit為真值域,因此可表示的數值範圍是,對應的二進位制補碼編碼是。

c++中整型常量中的有符號和無符號怎麼理解,怎麼判斷?

7樓:覺悟壯志

按字面意思理解就可以。

有符號整型既可以表示正整數,又可

以表示負整數。內(當然也可以容表示0)

無符號整型預設只表示正整數

一、區別

區別1. 最明顯的區別還是在關鍵字上,有符號整型用int/short/long ,無符號整型unsigned(int)/ unsigned short/unsigned long

區別二2.取值範圍不同,因為有符號整型要表示負數,所以表示範圍分佈在0左右

以int 為例,int表示範圍是 -2^31到2^31-1. 無符號整型不需要表示符號,所以分佈在0的右邊,以unsigned(int)為例,unsigned (int) 範圍是 0到2^32-1

二、應用

總的來說用起來差不多,但是由於表示範圍不同,各取所長。

比如年齡欄位一般而言是正數,所以用unsigned short即可(當然,int也不會報錯)

又如訂單系統需要表示庫存數量的增減變化,可以用int

8樓:匿名使用者

無符號版本

和有來符號版本源的區別就是無符號型別bai能儲存2倍於有符du號型別的正整數zhi資料dao,比如16位系統中一個int能儲存的資料的範圍為-32768~32767,而unsigned能儲存的資料範圍則是0~65535

設等差數列an的公差為整數,且a4 a3 28,a5 10高中數學數列題啊

由題意 a4 a1 3d a3 a1 2d a5 a1 4d a5 10 a1 10 4d a4 a3 2 28 10 d 10 2d 2 28 72 40d 4d 2 即 4d 2 39d 62 0 解得 d 31 4或d 2 公差為整數 d 2 則a1 10 4 2 2 an a1 n 1 d ...

一個關於C語言的程式問題?C語言程式問題?

資料在記憶體中都是二進位制的,無符號的和有符號的資料,在記憶體中的表示是一樣的。在記憶體中資料的表示都是補碼,比如1在記憶體中表示為00000001,1在記憶體中的表示為11111111.不管你是用什麼有符號,還是無符號的,在記憶體中,資料都是這樣表示的。你定義了一個unsigned int a,只...

C 編寫程式,讀入整數後,能夠判斷它是否為迴文數

include include include void main printf 請輸入一個字串 scanf s a for unsigned int i 0 i strlen a 2 i else if i strlen a 2 1 printf 這個字串是迴文 r n r n else cont...