如果你不懂二進位,那麼這個問題很難理解

2021-01-08 老張話IT

小豆丁:老張啊,你幹啥呢?

小豆丁:老張啊,你這會忙不?

小豆丁:老張啊,你別不理我啊?

老張:沒看我正忙呢嗎!

小豆丁:別跟我說你在忙著睡覺!!!哼!!!

老張:你找我肯定不是啥好事,說吧,啥情況?

小豆丁:嘿嘿,老張果然慧眼如炬料事如神,幫我看個代碼唄~

老張:啥代碼,我瞧瞧!

小豆丁:就這個!結果為啥不是300啊!

老張:肯定不是300啊,應該是44吧!

小豆丁:對啊對啊,為啥你一看就知道結果是44呢,你真厲害!

老張:少拍馬屁!這跟二進位有關係!如果不了解二進位和數據類型的相關知識,是很難理解程序輸出結果的。

小豆丁:快給我解釋解釋吧!

老張:你在程序中把數字300賦值給字符類型變量ch,在沒有特殊處理的情況下,我們C語言程序中出現的數字都是按照四字節的整數類型處理的。300的二進位表示為:

00000000 00000000 00000001 00101100

而字符類型變量ch在內存中只佔一個字節,它無法全部存下數字300的數據。

小豆丁:哦,那怎麼辦啊?

老張:畢竟ch變量只有一個字節,所以在存儲的時候,300的前三個字節內容被捨棄,只有最後一個字節的內容被保存到ch變量中,也就是說ch變量的這一個字節存儲的內容是

00101100;

小豆丁:可是,第三個字節上還有數據呢!這就不要了?

老張:不要了!存不下,該捨棄就捨棄就捨棄唄!

小豆丁:怪不得最終結果變成了44,原來是這麼回事啊!

老張:通過這個練習,說明了一個問題!

小豆丁:啥?

老張:關於二進位的問題,你掌握得不牢固!快去把二進位的內容再給我複習一遍!!!

小豆丁:哦……

相關焦點

  • 程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥
    程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥?假如你有一個程式設計師的女朋友,突然給你發了一串數據(68656c6c6f 62616279),你知道什麼意思嗎?該怎麼回她呢?計算機專業的同學,在學習編程中,尤其是初學者,經常有這樣的疑問,一般人只認識十進位(520),電腦只能識別二進位(1000001001),那十六進位(208)能做什麼的?為什麼還要在中間加上一個十六進位呢,是不是多此一舉嗎?本來初學編程,對二進位就不熟悉,要花不少時間和理解來學習理解,在學個十六進位不是很多餘嗎?
  • 計算中二進位與十進位之間的轉換,你能看懂嗎?
    眾所周知,計算機的運算中,都是用二進位來運算的,前兩天推送了兩篇關於計算機基礎知識的測試題,發現有很多童鞋對這個進位轉換還不是很熟悉。
  • 少兒編程中,你該如何給孩子講解進位問題
    好了,回復完這個問題,我們現在繼續來討論少兒編程,少兒編程,前期需要了解一定的計算機常識,而進位問題,是一個繞不過去的坎。尤其是二進位,我們不說什麼考試的重點這些,也不牽扯太多的教學問題,二進位,指定是計算機常識裡面最重要的基礎知識。今天,我們就來探討一些如何讓孩子理解進位問題。
  • 二進位、十進位和十六進位
    二進位就是逢二進位,它的一個位只有兩個值:0 和 1,但它卻是實現計算機系統的最基本的理論基礎,計算機(包括單片機)晶片是基於成萬上億個的開關管組合而成的,他們每一個都只能有開和關兩種狀態,再難找出第三個狀態了(不要辯解半開半關這個狀態,它是不穩定態,是極力避免的),所以他們只能對應於二進位的 1 和 0 兩個值,而沒有 2、3、4......,理解二進位對於理解計算機的本質很有幫助。
  • 快速理解二進位計數的基數和位權
    伸出你的右手,從小指開始,給每個手指指定一個位權,位權依次是1、2、4、8、16。手指有伸直和彎曲兩個狀態,把伸直狀態用數字1表示,彎曲狀態用數字0表示。現在將右手的五個手指全部伸直,然後將拇指和食指彎曲,從拇指開始依次記錄下每個手指的狀態:00111。
  • 二進位原碼/反碼/補碼詳解,不懂的請看過來
    機器值從字面理解就是機器(計算機)識別的值,實際上也確實是這個意思。計算機中通過高低電平表示1或者0,這樣就可以表示一個二進位的數值。一個1或者0表示的數值位稱為一個bit,而計算機中存儲和傳輸數據的最小單位是一個字節(byte)也就是8個bit,所以說計算機所有計算本質上都是基於二進位。
  • scratch3.0圖形化編程軟體解決「進位轉換(二進位)」問題
    想要回顧的請移步「百度百科」,嘻嘻首先 我們來看一下1~16 的一個二進位與十進位的對照表格:以上表格就是0-16的表達對照這種方法就是我之前文章的「思路1」,感興趣的網友們可以去看一下我之前的文章連結→scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)這次我們主要說一下「短除法」思路解決十進位轉換為二進位
  • 什麼是二進位,這裡讓你通俗易懂
    關於計算機的二進位,首先來想想我們日常使用的十進位。那麼為什麼我們日常要使用十進位呢?其實看看你的雙手,一共有幾根手指?是不是一共十根?那麼10 代表的就是一雙手的手指的數量。但是到了計算機裡這種數值表述方式就麻煩了,如果我們要在計算機保存十進位數值那麼,計算機得有能力用某種形式描述出至少10種狀態才行也就是0到9。那麼想像一下要是我們每隻手只有3個手指,那麼如果10 依舊代表一雙手(六根手指),此時12相當於一雙手加兩個手指 也就是「八」。這種計數方式我們可以稱為6進位。那麼234這個數值在六進位裡代表什麼呢?
  • Java二進位和位運算,這一萬字準能餵飽你
    小貼士:半導體開代表1,關代表0,這也就是CPU計算的最底層原理先看一個例子:12求 1011(二進位)+ 11(二進位) 的和?結果為:1110(二進位)二進位理解起來非常非常的簡單,比10進位簡單多了。你可能還會思考二進位怎麼和十進位互轉呢?畢竟1110這個也看不到啊。
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    今天就跟大家分享一下有關進位轉換的理論知識,大家可以通過對比從裡面發現共同點,這樣便於我們理解記憶。在進行講解之前,我們先在下面放置一個對應表,因為在理解下面轉換的時候,你可以隨時查看該表。>二進位101對應5小數部分為:0.5得到結果:將101110.101轉換為八進位為56.5 ② 將二進位數1101.1轉換為八進位 這個就簡寫了,看看你能看懂了嗎?
  • 二進位的前身是八卦?一起走進10000000000的世界
    我們在課上都學過,二進位為「逢二進一」,以及用1或者0來表示,這是為什麼呢?如果用通俗的方式來解釋,我們可以把二進位比作用燈泡來烽火通信。比如當完全沒有情況時,一個燈都不用開,用0表示;如果有1個敵人,也就是1個信息,就用1表示。如果來了200個敵人怎麼辦?
  • 河內塔 超立方體 二進位
    而這個關係,也出現在「西洋棋棋盤上的麥粒「那個有名的問題當中。今天這期內容則不管移動的次數,而要研究移動的模式。)如果把二進位數從右邊數第一個數所在的列用a表示,第2個數用b表示,第三個數用c表示,那麼,把這些紅色的1所在的列的字母表示(a或b或c)再次寫到表格的最右邊一列中,於是,我們就得到了下面一列數:abacaba你發現沒有,河內塔移動的前七步、螞蟻在正方體稜上爬行的路徑,都與二進位數有著相同的數學模式,也就是說兩者是同構的。這個是不是很神奇!
  • 二進位,八進位,十進位,十六進位之間的轉換
    說起二進位,十進位等大家都很熟悉,但是如果讓你相互轉換,你還會麼?
  • 二進位數的加減法
    二進位數加減法前面我們講過【二進位,十進位(包含小數)相互轉換】。今天來看一下二進位加減法。
  • 關於二進位世界的秘密
    我們都知道,計算機的底層都是使用二進位數據進行數據流傳輸的,那麼為什麼會使用二進位表示計算機呢?或者說,什麼是二進位數呢?在拓展一步,如何使用二進位進行加減乘除?二進位數如何表示負數呢?本文將 一一 為你揭曉。
  • 二進位小總結
    真值與機器值真值很好理解,就是十進位的數字前面再加上正負號,這是人類可以簡單識別的數字,比如 0、±16、±1084、±10.34、±100.453 等,而正數前面的+符號可以省略。機器值從字面理解就是機器(計算機)識別的值,實際上也確實是這個意思。計算機中通過高低電平表示1或者0,這樣就可以表示一個二進位的數值。
  • 二進位轉換十進位,十進位轉換二進位
    如果把一個十進位的數轉換成二進位的數 , 直接把數除 以二 , 餘數為一就寫1 , 整除 , 就寫0 , 一直除完為止
  • 為何人類都用十進位計數?關於二進位,八進位……你又了解多少?
    十進位就這樣一代傳一代逐漸被整個人類社會使用。實際上,在古代世界獨立開發的有文字的計數體系中,除了巴比倫文明的楔形數字為60進位,瑪雅數字為20進位外,幾乎全部為十進位。二進位——計算機的計數進位我們知道計算機是不懂人類的語言的,那如何讓計算機按照人的想法工作呢?
  • 萊布尼茨發明二進位與太極八卦無關
    萊布尼茨國內的「國學粉、博大精深粉」一般就是以這個時期類似文章內容作為津津樂道之源頭,更多的是道聽途說而寧可信其有的。那麼,這些文章的依據何來呢?收到信後萊布尼茨發現中國古老《易經》中的陰爻「- -」與陽爻「—」可以解釋為二進位計數的「0與1」加以解釋,他為此感到很高興:「幾千年不能很好解釋的奧秘由我理解了,應該讓我加入中國國籍吧!」
  • 二進位與十六進位之間互相轉換
    通過上節課的學習,我們掌握了二進位與八進位互相轉換的方法(我們介紹的是421法),我們進行知識遷移,二進位數轉換成十六進位數的方法我們用