掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ビット単位 (ID:61036)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
おもしろそうなので作ってみた。 void BitFunc( bool bDataA, bool bDataB, bool bDigitUp, bool* lpbDataC, bool* lpbNextDigitUp ) { if( bDataA == bDataB ){ // (1, 1, bDigitUp) or (0, 0, bDigitUp)の場合 // 桁上がりの値となる *lpbDataC = bDigitUp; if( bDataA ){ // (1, 1, bDigitUp)の場合 // 必ず桁上がり発生 *lpbNextDigitUp = true; }else{ *lpbNextDigitUp = false; } }else{ // (1, 0, bDigitUp) or (0, 1, bDigitUp)の場合 // 桁上がりと反対の値となる *lpbDataC = !bDigitUp; // 桁上がりがある場合、次も桁上がり *lpbNextDigitUp = bDigitUp; } } int main( void ) { unsigned short DataA = 0x0A, DataB = 0x0F, DataC = 0x00; bool bNextDigit = false, bBitC = false; int iBit = 0; for( iBit = 0; iBit < 16; iBit++ ){ // iBitの計算 BitFunc( ((DataA>>iBit) & 0x01), ((DataB>>iBit) & 0x01), bNextDigit, &bBitC, &bNextDigit ); // 計算結果の反映 if( bBitC ){ DataC |= (0x01<<iBit); } }//for(iBit) printf( "DataC = %X\n", DataC ); return 0; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.