日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

补补算术基础:编程中的进制问题

發布時間:2025/4/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 补补算术基础:编程中的进制问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于二進制、八進制、十六進制以及它們與十進制的關系和轉換。詳細地請參考下面的文章(寫得還不錯)

http://www.d2school.com/bcyl/bhcpp/newls/ls06.htm

在我們編程過程中,用得最多的是十進制,然后是十六進制,他們的轉換在c#中主要用兩個方法

Convet.ToString() 和 Convert.ToInt32()

?

我總結幾點:(以下黑體,斜體字是我的總結摘要)

6.1 為什么需要八進制和十六進制?

關于這一點,首先因為進制越大,表示一個數字就越短。計算機只認識二進制,但二進制我們不好理解,它太長,而且很不直觀。八進制和十六進制因為都是2的整數冪(八進制是2^3,而十六進制是2^4),所以他們本身很好轉換為二進制。

但是為什么我們通常用的又不是八進制和十六進制,而是十進制呢?這又是一個問題。

6.2 二、八、十六進制數轉換到十進制數

    • 6.2.1 二進制數轉換為十進制數
    • 6.2.2 八進制數轉換為十進制數
    • 6.2.3 八進制數的表達方法
    • 6.2.4 八進制數在轉義符中的使用
    • 6.2.5 十六進制數轉換成十進制數
    • 6.2.6 十六進制數的表達方法
    • 6.2.7 十六進制數在轉義符中的使用

總結來說,這些進制轉換為十進制的算法類似如下

八進制1507換算成十進制。

第0位 7 * 80 = 7

第1位 0 * 81 = 0

第2位 5 * 82 = 320

第3位 1 * 83 = 512?? +

--------------------------

????????????? 839(十進制)

就是說把這個數的不同位的值乘上一個與當前進制有關的權數。第0位就乘以進制的0次方,第1位就乘以進制的1次方,以此類推。

6.3 十進制數轉換到二、八、十六進制數

  • 6.3.1 10進制數轉換為2進制數
  • 6.3.2 10進制數轉換為8、16進制數

?

反過來,要把十進制轉換為其他的進制,算法大致如下

將商繼續除以對應的進制(例如2,8,16),直到商為0。最后將所有余數倒序排列,得到數就是轉換結果。

例如要把十進制中的6轉換為2進制,按照下面的方式運算,然后將余數倒過來,就是110.

被除數計算過程余數
66/230
33/211
11/201

?

還有一個關鍵問題,如何在編碼中表示一個八進制或十六進制呢?例如給你一個數字:123。你怎么知道是八進制,還是十六進制,還是十進制呢?

為了以示區分,八進制要加上一個0(零)的前綴,例如123應該書寫為0123;而十六進制要加上一個0x的前綴,例如123應該書寫為0x123

關于轉義字符的問題,一般忽略不考慮

?

6.4 二、十六進制數互相轉換

6.5 原碼、反碼、補碼

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

比如 00000000 00000000 00000000 00000101 是 5的 原碼。

反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。

取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)

比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反碼。

反碼是相互的,所以也可稱:

11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互為反碼。

補碼:反碼加1稱為補碼。

也就是說,要得到一個數的補碼,先得到反碼,然后將反碼加上1,所得數稱為補碼。

比如:00000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。

那么,補碼為:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011。轉換為十六進制:0xFFFFFFFB。

從本質上說,只有十進制有正負之分,其他進制都沒有。那么如果要表示負數怎么辦呢?就是先用二進制取得原碼,然后取反碼,然后取補碼。然后再根據情況轉換為其他進制。

那么還有一個問題,就是如何表示小數?

?

6.6 通過調試查看變量的值

6.7 本章小結

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的补补算术基础:编程中的进制问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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