国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F4_十進制和BCD碼的轉(zhuǎn)換

這篇具有很好參考價值的文章主要介紹了STM32F4_十進制和BCD碼的轉(zhuǎn)換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

1. BCD碼

2. BCD碼和十進制轉(zhuǎn)換的算法


前言

? ? ? ? 最近在學(xué)習(xí)STM32單片機(不僅僅是32)的RTC實時時鐘系統(tǒng)的過程中,需要配置時鐘的時間、日期;這些都需要實現(xiàn)BCD碼和十進制之間進行轉(zhuǎn)換。這里和大家一起學(xué)習(xí)BCD碼和十進制之間轉(zhuǎn)換的代碼;

STM32F4_十進制和BCD碼的轉(zhuǎn)換

1. BCD碼

????????BCD碼是指用二進制數(shù)來表示十進制的數(shù);也就是說4位二進制數(shù)來表示一位十進制數(shù),因此二進制可以表示的最大十進制數(shù)為9(1001)。

????????因為二進制數(shù)能表示的最大十進制數(shù)才是9,所以當數(shù)字大于9時,也就是數(shù)字為兩位數(shù)時,我們需要用8位BCD碼來表示;4位的BCD碼只能表示9以下的數(shù)字;遵循逢九進一的原則;

????????我們都知道:二進制是逢二進一,十進制是逢十進一,十六進制是逢十六進一,它們之間每次都差6,所以一個十進制想要轉(zhuǎn)換成BCD碼,必須先要算清楚進了幾次位;

當兩個十進制數(shù)相加

STM32F4_十進制和BCD碼的轉(zhuǎn)換

但是如果相加最終的值位于10-15之間,也就是十六進制數(shù)的A-F之間,則需要加6進行修正;如果相加的值位于20-25之間,則需要修正2次,也就是加上2*6=12;就是這個道理;(每出現(xiàn)一次十六進制溢出9,就修正一次,溢出多少次,修正多少次)

STM32F4_十進制和BCD碼的轉(zhuǎn)換

多次修正的情況:比方說十進制下的66,66/10=6次,也就是說修正了6次,這里修正次數(shù)的意思是,出現(xiàn)一次十六進制下溢出9,就修正一次,(溢出第一次來到10-15,溢出第二次來到20-25,依次類推,總共溢出了6次,就是這個道理),所以需要加上6*6=36,所以最終的BCD碼為66+36=102;

BCD碼轉(zhuǎn)十進制是一個道理

STM32F4_十進制和BCD碼的轉(zhuǎn)換

2. BCD碼和十進制轉(zhuǎn)換的算法

十進制轉(zhuǎn)換成BCD碼,代碼如下

//dec:十進制數(shù)   bcd:BCD碼
int dec_bcd(int dec)
{
	return(dec+(dec/10)*6);
}

BCD碼轉(zhuǎn)換成十進制,代碼如下

//dec:十進制數(shù)   bcd:BCD碼
int bcd_dec(int bcd)
{
	return(bcd-(bcd>>4)*6);
	//該返回的意思是說:比如BCD碼為10011,右移四位,空位補0會得到0001,
	//該值表示修正的次數(shù),之所以這樣,是因為四位的二進制表示不來大于9的十進制
	//所以才會引入8位BCD碼,如果將8位BCD的高4位移回到低四位的位置,就會得到減去1111之后的數(shù),該數(shù)就是修正的次數(shù)
}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??文章來源地址http://www.zghlxwxcb.cn/news/detail-435144.html

到了這里,關(guān)于STM32F4_十進制和BCD碼的轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python中二進制十進制轉(zhuǎn)換

    ????????hello大家好,今天我想和大家分享一下在Python中進制轉(zhuǎn)換加減法的方法。 ????????比如現(xiàn)在我們需要求100 + 10,然后需要將結(jié)果110以二進制的形式返回,又或者我們現(xiàn)在有一個小需求,就是要計算二進制1010和二進制1011的和是多少,然后依舊以二進制的形式返回

    2024年02月16日
    瀏覽(95)
  • 十六進制轉(zhuǎn)換到十進制(java)

    一、前言 ?首先我們要知道十六進制的轉(zhuǎn)換以及十以上的進制的轉(zhuǎn)換與十以下的進制轉(zhuǎn)換是不一樣的,它們在一位上會用超過9的數(shù)字,這個我們在利用以前的方法就行不通了,我接下來就向大家分享一種方法。(注:在Java中10---15分別用A B C D E F表示,不分大小寫) 二、正文

    2024年02月11日
    瀏覽(32)
  • 【Python 千題 —— 基礎(chǔ)篇】進制轉(zhuǎn)換:十進制轉(zhuǎn)二進制

    題目描述 計算機底層原理中常使用二進制來表示相關(guān)機器碼,學(xué)會將十進制數(shù)轉(zhuǎn)換成二進制數(shù)是一個非常重要的技能?,F(xiàn)在編寫一個程序,輸入一個十進制數(shù),將其轉(zhuǎn)換成二進制數(shù)。 輸入描述 輸入一個十進制數(shù)。 輸出描述 程序?qū)⑤斎氲氖M制數(shù)轉(zhuǎn)換為二進制數(shù),并輸出其

    2024年02月07日
    瀏覽(30)
  • MATLAB十六進制與十進制互相轉(zhuǎn)換

    包含單個數(shù)字進行轉(zhuǎn)換和數(shù)組進行轉(zhuǎn)換(可用于串口數(shù)據(jù)解析) 1.十六進制轉(zhuǎn)十進制

    2024年01月16日
    瀏覽(32)
  • C++十進制與二進制之間的轉(zhuǎn)換

    C++十進制與二進制之間的轉(zhuǎn)換

    一般采用\\\"除2取余,逆序排列\(zhòng)\\"法: 也就是將一個十進制數(shù)不斷除2,將每次得到的余數(shù)倒序從后向前排列。 拿求救信號6舉個例子: 6/2=3……0? 末位就是0 3/2=1……1? ?前一位就是1 1/2=0……1? 再前一位就是1 再畫個圖輔助理解,這回試試100: 所以100的二進制表達就是1100100 那用

    2024年02月08日
    瀏覽(24)
  • 進制轉(zhuǎn)換—包含整數(shù)和小數(shù)部分轉(zhuǎn)換(二進制、八進制、十進制、十六進制)手寫版,超詳細

    進制轉(zhuǎn)換—包含整數(shù)和小數(shù)部分轉(zhuǎn)換(二進制、八進制、十進制、十六進制)手寫版,超詳細

    目錄 1.進制轉(zhuǎn)換必備知識: ????????1.1 二進制逢2進1? ? ? ? ?8進制逢8進1? ? ? ? ? ?10進制逢10進1? ? ? ? 16進制逢16進1 ????????1.2為了區(qū)分二、八、十、十六進制,我們通常在數(shù)字后面加字母進行區(qū)分 2. 二進制與八進制、十六進制相互轉(zhuǎn)換 ????????2.1 二進制轉(zhuǎn)

    2023年04月23日
    瀏覽(130)
  • 【進制轉(zhuǎn)換】— 包含整數(shù)和小數(shù)部分轉(zhuǎn)換(二進制、八進制、十進制、十六進制)手寫版,超詳細

    【進制轉(zhuǎn)換】— 包含整數(shù)和小數(shù)部分轉(zhuǎn)換(二進制、八進制、十進制、十六進制)手寫版,超詳細

    目錄 1.進制轉(zhuǎn)換必備知識: ????????1.1 二進制逢2進1? ? ? ? ?8進制逢8進1? ? ? ? ? ?10進制逢10進1? ? ? ? 16進制逢16進1 ????????1.2為了區(qū)分二、八、十、十六進制,我們通常在數(shù)字后面加字母進行區(qū)分 2. 二進制與八進制、十六進制相互轉(zhuǎn)換 ????????2.1 二進制轉(zhuǎn)

    2024年02月05日
    瀏覽(1475)
  • Java中十六進制與十進制之間互相轉(zhuǎn)換

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內(nèi)容: 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 話不多說,直接上代碼 如將十進制數(shù)字 108 轉(zhuǎn)換為十六進制 代碼示例如下: 運行結(jié)果: 這樣將一個十

    2024年02月12日
    瀏覽(29)
  • 二進制與十進制數(shù)互相轉(zhuǎn)換的方法及原理

    二進制與十進制數(shù)互相轉(zhuǎn)換的方法及原理

    有人問我一道十進制數(shù)轉(zhuǎn)化為二進制數(shù)的題:13.625轉(zhuǎn)化為二進制應(yīng)該如何表示。讓我回憶起十多年前學(xué)編程時就搞不懂二進制,不找“不必求甚解”的借口,我搜索了一些平臺,但很失望,這么多年過去了,能找到的資源依然和以前一樣,只講怎樣操作,不提為什么這樣操作

    2024年02月04日
    瀏覽(26)
  • 簡單使用Linux printf 將十進制轉(zhuǎn)換為十六進制

    在開發(fā)和排查問題過程中,有時我們需要做一些進制的轉(zhuǎn)換,以下是一些快速的小技巧: 下面的是?十進制轉(zhuǎn)換為十六進制: 還可以把?十六進制轉(zhuǎn)為十進制: 其實中引號中%x為要轉(zhuǎn)換的格式,n為換行“new line” 還可以十進制轉(zhuǎn)換為八進制 另外使用bc命令進行轉(zhuǎn)換也可的大

    2024年04月16日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包