日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

计算机中符号位正负,负数在计算机中的表示+有符号无符号的区别+负数按位运算...

發布時間:2023/12/8 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机中符号位正负,负数在计算机中的表示+有符号无符号的区别+负数按位运算... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

部分轉載自:https://blog.csdn.net/kebi007/article/details/89741960

一.負數的二進制位表示法

原碼:一個整數按照絕對值的大小轉換成的二進制數,稱為原碼

一個short 16位的整數9的原碼是:

0000?? ?0000?? ?0000?? ?1001

1

反碼:一個二進制數按位取反,所得的二進制數成為原二進制數的反碼

取9的二進制數的反碼,可以使用位邏輯非運算 ~

取反后的16位二進制

1111?? ?1111?? ?1111?? ?0110

1

補碼:反碼加1稱為補碼,簡而言之,要得到一個屬的補碼,先得到這個數的反碼,然后再將反碼加上1,所得數稱為補碼

那么9的補碼也就是

1111?? ?1111?? ?1111?? ?0110

1

加上1的結果,如下:

1111?? ?1111?? ?1111?? ?0111

1

即-9的16位二進制表示是

1111?? ?1111?? ?1111?? ?0111

1

如圖:

二.c#Int有符號的和無符號的區別

話不多說,直接明確三點結論:

1.實際開發中,都用的是有符號的Int(應該默認強制要求),只有整型有有無符號的特征,Double、Decimal,是沒有這種特征的。

2.無符號數中,所有的位都用于直接表示該值的大小。

3.有符號數中,最高位用于表示正負。

這里還是簡單地啰嗦幾句關于有符號和無符號的區別,UInt32和Int32的區別

這里說的Int指的是32位有符號的類型

Int32的值范圍是 -2147483648 至2147483647,也就是

-2的31次方到2的31次方-1

符號位表示的意義就在于此,最前面的位表示正負。

-2148483648的32位二進制是:

1000?? ?0000?? ?0000?? ?0000?? ?0000?? ?0000?? ?0000?? ?0000

1

2147483647的32位二進制是:

0111?? ?1111?? ?1111?? ?1111?? ?1111?? ?1111?? ?1111?? ?1111

1

那么c#中UInt32的最大值是什么呢?

UInt32的范圍是0到2的32次方4294967295,最大值32位二進制是

1111?? ?1111?? ?1111?? ?1111?? ?1111?? ?1111?? ?1111?? ?1111

1

所以得出結論無符號只能表示正數,有符號可以表示正負數。

三.按位運算

負數按位運算時,是按計算機存儲的格式進行按位運算的,即以補碼的形式,可以認為:

所有的按位操作符的操作數都會被轉成補碼形式的有符號整數

總結

以上是生活随笔為你收集整理的计算机中符号位正负,负数在计算机中的表示+有符号无符号的区别+负数按位运算...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。