在Linux中使用計算器遇到的問題

進制轉換的時候出現了與理解不同的結果

Linux中的計算機大家或許都用過吧,那你們有沒有遇到過這樣的問題呢?

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=16
obase=10
10
10

按照正常的理解ibase設置的是輸入的進制數,obase設置的是輸出進制數,16進制的10轉換成10進制應該是16啊,為什么上面的結果卻是10呢?很明顯的跟正確的結果不一樣,也就是說這樣她輸出的結果不對,這肯定不是計算器出毛病了,但是為什么它輸出的結果不對呢,于是我還試了試別的別進制轉換:

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=16
obase=2
10
10000

上面的執行結果看看明顯是對的啊,那為什么我第一次16進制轉換成10進制的結果卻不對我們想要的結果呢?我問了問度娘,發現有人跟我遇到了同樣的問題,但是他的回答:把obase寫在前面ibase寫在后面,如果位置調換了就會出一系列問題,我趕緊試了一下:

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
obase=10
ibase=16
10
16

哇~?說的果然是對的,你這樣寫還要前面的obase干嘛,不是多此一舉嗎?計算器默認的輸入輸出進制就是十進制。可是為什么先設置ibase=16在設置obase=10得到的結果就不是我們想要的答案呢?于是我又換了把obase的值改了一下,又試了一遍:

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ibase=16
obase=A
10
16

是不是發現了什么?都知道A是在16進制中表示的是10進制中的10,而10在16進制中是10進制中的16,這下是不是明白了呢?之所以我們設置ibase=16?obase=10的時候輸出的結果不是我們想要的,是因為ibase=16?下面的obase的值被當做是16進制中的10,也就是10進制中的16,輸入的是十六進制數,輸出的也是十六進制數,所以得到的結果不是我們想要的了。

還是再驗證一下吧:我們把八進制轉成十進制先設置ibase=8,obase=10看看是什么樣的呢?

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=8
obase=10
10
10

八進制中的10是8,輸入輸出都是8進制所以結果都一樣;八進制中的12是十進制中的10,我們把obase改成12是不是就是轉成十進制了呢?

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=8
obase=12
10
8

上面的結果顯示是對的,你們是不是明白了呢?不明白的請留言!

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88395

(1)
ChaogGeChaogGe
上一篇 2017-11-14 00:41
下一篇 2017-11-14 15:08

相關推薦

  • Linux basics–part1

    一、計算機的組成及其功能 依據馮·諾依曼體系結構,計算機可分為五大部分,CPU的運算器和控制器、內存、輸入、輸出。 CPU運算器:計算機中執行各種算術和邏輯運算操作的部件。運算器的基本操作包括加、減、乘、除四則運算,與、或、非、異或等邏輯操作,以及移位、比較和傳送等操作,亦稱算術邏輯部件(ALU)。運算器由算術邏輯單元(ALU)、累加器、狀態寄存器、通用寄存…

    Linux干貨 2017-07-10
  • Linux文件管理命令

    Linux系統上文件管理命令 一、文件查看類命令      1、cat 由第一行開始顯示文件內容 語法格式: cat [選項列表] [文件列表]… 參數說明: -A, –show-all 等價于 -vET 。 -b, –number-nonblank 給非空輸出行編號。 -e 等價于 -vE 。 -E…

    Linux干貨 2017-07-24
  • CentOS系統啟動流程(上)

    CentOS系統啟動流程(上)   作為系統運維人員,詳細的了解操作系統的啟動流程,對于我們日常排除故障大有益處,遇到相關的問題處理,能快速定位,迅速鎖定關鍵點。 下面詳細介紹一下,CentOS系統的啟動過程,以供各位參考。由于linux各個發行版使用的啟動方法略有不同,比如CentOS5使用的是initd,CentOS6使用的是較為接近的Upst…

    Linux干貨 2016-06-09
  • 千萬不要把 bool 設計成函數參數

    我們有很多Coding Style 或 代碼規范。但這一條可能會經常被我們所遺忘,就是我們經常會在函數的參數里使用bool參數,這會大大地降低代碼的可讀性。不信?我們先來看看下面的代碼。 當你讀到下面的代碼,你會覺得這個代碼是什么意思? widget->repaint(false); 是不要repaint嗎?還是別的什么意思?看了文檔后,我們才知道這個…

    Linux干貨 2016-07-10
  • 磁盤管理、文件系統、掛載

    磁盤管理 一磁盤分區 磁盤分區有兩種方式:MBR和GPT MBR:1)按照柱面進行分區;分區不超過2T 2)關于0磁道0扇區的前512bytes;其中的446bytes為boot loader;中間的64bytes裝有分區表;2bytes為55AA 3)可分4個分區;3個主分區+1擴展(N個邏輯分區)擴展分區最多一個。 GPT分區:1)GUID patiti…

    Linux干貨 2016-08-29
  • 馬哥教育網絡班22期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; fdisk /dev/sdd n p 1 2048 +10G w (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; mke2fs -t ext4 -b 2048 -m 2&nb…

    Linux干貨 2016-09-26
欧美性久久久久