二進位求和

2021-03-01 嗨客網IT教程

力扣第  67 題。給你兩個二進位字符串,返回它們的和(用二進位表示)。輸入為非空字符串且只包含數字 1 和 0。

示例1:

輸入: a = "11", b = "1"輸出: "100"

示例2:

輸入: a = "1010", b = "1011"輸出: "10101"

提示:

思路我們一般的情況下對十進位求和比較熟悉,其實二進位求和與十進位求和是類似的,十進位求和是遇 10 進 1。二進位求和是遇 2 進 1。我們可以從右往左遍歷二進位數值,然後將每個遍歷到的數據進行相加。

就算是十進位數據,我們是從右往左逐位相加。因為逢 2 需要進 1 位。所以 1 + 1 = 2,要轉換為 0。並且將前一位進 1。前一位數據進行相加操作的時候,需要再額外加 1。

計算順序如下:

第一步:1 + 1 =2。需要將當前的值設置為 0,並且將前一位是否需要加 1 的臨時欄位設置為 1。

第二部:1 + 0 + 1 = 2。當前第一個二進位數是 1。第二個二進位數沒有值,就相當於 0。由於前一位相加之和是 2。需要前進一位,所以當前值需要加 1。計算結果為 2,需要將 2 轉換成 0。將額外相加的臨時值設置為 1。

判斷額外相加的值是否為 1,如果是 1 就將 1 加上,如果不為 1 就結束。

將現有結果反轉,得到最終數據。

例如 1010 + 1011:

和上面的步驟類型,要從右往左計算對應位置上面的和。因為逢 2 進 1。所以我們需要定義一個中間臨時值,用來標記當前操作的時候是否需要再額外加 1。

計算順序如下:

第一步:0 + 1 = 1。

第二步:1 + 1 = 2 ,轉換成 0,在前一位相加是否需要額外加 1 的值賦值為 1。

第三步:0 + 0 + 1 = 1。

第四步:1 + 1 =2,轉換為 0,在前一位相加是否需要額外加 1的值賦值為 1。

第五步:判斷額外相加的值是否為 1,如果是 1 就將 1 加上,如果不為 1 就結束。

第六步:將現有結果反轉,得到最終數據。

代碼實現

Go 語言版本實現如下:

Tips:為了方便閱讀,以上代碼全部以圖片格式展示,要下載源碼,請點擊左下角 閱讀原文 連結!

相關焦點

  • 計算機的語言——二進位,十進位、八進位、十六進位與二進位之間的轉換
    而C程序代碼中的整數常量,為了書寫方便,用十進位、八進位、十六進位表示,比如:十進位整數123、-23、+99等。而無論十進位、八進位還是十六進位數據在計算機中表示是轉換成二進位編碼表示,計算機中只存在二進位。
  • 進位轉換 二進位轉十進位
    上節課我們學習了十進位轉換成二進位的方法,那二進位轉換十進位是怎麼轉換的呢?
  • 二進位與八進位互相轉換
    上節課我們學習了二進位轉換十進位,那二進位與常用的八進位之間是如何互相轉換的呢?下面我們先看看二進位與八進位的轉換方法。
  • 二進位與十六進位之間互相轉換
    通過上節課的學習,我們掌握了二進位與八進位互相轉換的方法(我們介紹的是421法),我們進行知識遷移,二進位數轉換成十六進位數的方法我們用
  • 每日一道 LeetCode (15):二進位求和
    ,返回它們的和(用二進位表示)。這道題我第一眼看過去,二進位加法?不會,我才不要自己去寫一個二進位加法出來, Java 給我們提供了現成的 math 函數包,是用來看的麼?果斷第一個想法是先把二進位轉成十進位,做完加法以後再轉回去做輸出。我就是個小機靈鬼。
  • 二進位,八進位,十進位,十六進位轉換詳解~
    ①、數碼:用來表示進位數的元素。                                二進位:0,1。                                八進位:0,1,2,3,4,5,6,7                                十進位:0,1,2,3,4,5,6,7,8,9。
  • JAVA-二進位基礎
    一、二進位的概念計算機進位有:二進位、八進位、十六進位進位的基本特點是:每一位置上的數字必須在0-(進位-1)的範圍內,也就是說二進位只能有0、1;八進位為:0-7;十六進位比較特殊為:0-9,A(10) B(11) C(12) D(13) E(14) F(15)進位轉換:1、非十進位轉換十進位:每位數字乘以進位數的權重次方
  • 介紹一種二進位轉換成十進位的方法
    二進位如何轉換成十進位二進位轉換為十進位的簡便方法。
  • 計算機二進位數據是什麼,和十進位有什麼區別?還有其他的進位嗎
    在日常看編程學習資料的過程中, 我們經常看到二進位這個概念,那麼二進位都是什麼東西?我們日常使用的都是十進位的說法,他們之間有什麼區別?是否還有其他進位來表示數據?二進位計算機數據類型計算機中處理的數據有兩類,分別為「數值數據」和「非數值數據」。數值數據,指表示數量的數據,有正負和大小之分,在計算機中的數據以二進位的形式進行運算和存儲。
  • 快速理解二進位計數的基數和位權
    00111這個神秘的數字就是二進位計數,稱它為二進位數是因為它只有0和1兩個數字,用數學語言來說就是基數為2。依次類推,基數為3的是三進位計數、……、基數為10的就是十進位計數,十進位計數有10個數字,分別是0、1、2、3、4、5、6、7、8、9。認識了二進位計數,接下來再說說位權。
  • 跟我學java編程—不得不說的二進位和十六進位
    計算機能夠識別的數制是二進位數,二進位數是用0和1兩個數字來表示的數,計算機的指令集也是採用二進位表示,機器語言就是用二進位數編寫程序。可以藉助十進位數來理解二進位數。在十進位中,每一位有0、1、2、3、4、5、6、7、8、9十個數碼,因此基數為10,超過9就必須用多位數來表示,並遵循逢十進一的原則。
  • Python零基礎入門——認識二進位數
    這節課我們主要學習二進位數。為什麼要學習二進位數呢?因為二進位數只有兩個數字0和1,因此二進位數非常適合描述電路的通與短、開關的打開與關閉。例如,我們可以用二進位數0和1來表示燈泡的亮與不亮,用二進位數0來表示燈泡不亮,用二進位數1來表示燈泡亮,這樣我們就可以用多個二進位數來表示燈泡的亮與不亮了。如01011表示有三個燈泡亮,兩個燈泡不亮。
  • 二進位、八進位、十進位和十六進位數之間的轉換方法
    把十進位小數不斷的用其它進位的基數去乘,直到小數的當前值等於0或滿足所要求的精度為止,最後所得到的積的整數部分由上而下排列即為所求。2、非十進位數轉換成十進位數非十進位數轉換成十制數採用「位權法」,即把各非十進位數按位權展開,然後求和。
  • 關於二進位世界的秘密
    我們都知道,計算機的底層都是使用二進位數據進行數據流傳輸的,那麼為什麼會使用二進位表示計算機呢?或者說,什麼是二進位數呢?在拓展一步,如何使用二進位進行加減乘除?二進位數如何表示負數呢?本文將 一一 為你揭曉。
  • 二進位、八進位、十進位與十六進位
    例如對於二進位來說,該規則是「滿二進一,借一當二」;對於十進位來說,該規則是「滿十進一,借一當十」。其他進位也是這樣。A 8)16訣竅:因為每四位二進位數對應一位十六進位數,所以,以小數點為界,整數位則將二進位數從右向左每4位一隔開,不足4位的在左邊用0填補即可;小數位則將二進位數從左向右每4位一隔開,不足4位的在右邊用0填補即可。
  • 先聊算盤,再聊二進位
    要明白二進位,首先不妨試試它的計數規則! 當然二進位的乘除運算是如何進行的,則充滿了數學的奧秘與人類大腦精彩完美的推理。二進位是世界上第一臺計算機上用的算法,最古老的計算機裡有一個個燈泡,當運算的時候,比如要表達「一」,第一個燈泡會亮起來。
  • 二進位轉換十進位,十進位轉換二進位
    如果把一個十進位的數轉換成二進位的數 , 直接把數除 以二 , 餘數為一就寫1 , 整除 , 就寫0 , 一直除完為止
  • 二進位、十進位和十六進位
    二進位就是逢二進位,它的一個位只有兩個值:0 和 1,但它卻是實現計算機系統的最基本的理論基礎,計算機(包括單片機)晶片是基於成萬上億個的開關管組合而成的,他們每一個都只能有開和關兩種狀態,再難找出第三個狀態了(不要辯解半開半關這個狀態,它是不穩定態,是極力避免的),所以他們只能對應於二進位的 1 和 0 兩個值,而沒有 2、3、4......,理解二進位對於理解計算機的本質很有幫助。
  • 你知道什麼是二進位嗎?先看看你能看懂這句話嗎?
    說到二進位,肯定有很多小夥伴都有一定的了解,同時也會有一些還沒有了解到。懂不懂二進位看看下面這句話就可見分曉。「世界上有10種人...一種是懂二進位的,另一種是不懂二進位的。」我們平時數學上學習的都是十進位,我們都習以為常。其實二進位也是一樣的,十進位是逢十進一,二進位顧名思義就是逢二進一。十進位裡的數是由「0,1,2,3,4,5,6,7,8,9」這十個數字符號組成,在十進位裡我們沒有見到一個數字符號表示10,因為逢十進一嘛,同樣在二進位裡不會出現2及其以後的數,二進位裡只有0和1。說了半天,十進位的數如何轉成二進位呢?方法很簡單,進行除二取餘,參考下圖。
  • 進位詳解:二進位、八進位和十六進位
    二進位我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位(Binary)。例如,數字 0、1、10、111、100、1000001 都是有效的二進位。在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。本節我們先講解二進位的概念,下節講解數據在內存中的存儲,讓大家學以致用。