電腦系統——資料表示實驗

來源:互聯網
上載者:User

標籤:計算   資料表示   函數   需要   運算   ascii   數字   否則   dbi   

本次為一次電腦系統實驗,就是使用一些基本的運算子來實現函數功能。

ps做這些題讓我想起大一上學期剛學二進位時被鵬哥支配的痛苦。

1.

/*  * bitXor - 僅允許使用~和&來實現異或  *   例子: bitXor(4, 5) = 1 *   允許的操作符: ~ & *   最多操作符數目: 14 *   分值: 1 */

解題思路:簡單的異或,a⊕b = (¬a ∧ b) ∨ (a ∧¬b)但要求使用&,所以需要德摩根律

int bitXor(int x,int y){    return (~(~x&y)&~(x&~y));    //((~x&y)|(x&~y));}

 

2.

/*  * tmin - 返回最小的二進位補碼  *   允許的操作符: ! ~ & ^ | + << >> *   最多操作符數目: 4 *   分值: 1 */

解題思路:最小值為0x8000 0000,我們可以將1左移31位得到最小值。

int tmin(void){    return 1<<31;}

 

3.

/* * isTmax - 如果x是最大的二進位補碼,返回1;否則,返回0 *   允許的操作符: ! ~ & ^ | + *   最多操作符數目: 10 *   分值: 2 */

解題思路:最大的二進位補碼為0x7FFFFFFF,為判斷輸入是否為這一個數,我們只需要將其與最小的二進位補碼與或一下判斷是否為0即可。

int isTmax(int x){    return !(x^~(1<<31));}

 

4.

/*  * negate - 返回-x  *   例子: negate(1) = -1. *   允許的操作符: ! ~ & ^ | + << >> *   最多操作符數目: 5 *   分值: 2 */

解題思路:正數取反加一即為負數。

int negate(int x){    return (~x+1);}

 

5.

/*  * allOddBits - 如果所有奇數位都為1則返回1;否則返回0 *   例子: allOddBits(0xFFFFFFFD) = 0, allOddBits(0xAAAAAAAA) = 1 *   允許的操作符: ! ~ & ^ | + << >> *   最多操作符數目: 12 *   分值: 2 */

解題思路::只有所有奇數位為1的數,與0x5555 5555進行&運算才會得到0。5->(0101)。故而需要得到0x5555 5555,將0x55(01010101)分別左移8、16、24得到3個數,然後將這三個數相加即可得到0x5555 5555。

int allOddBits(int x){    return !(~(x|(85+(85<<8)+(85<<16)+(85<<24))));}

 

6.

/*  * isAsciiDigit - 如果x是ascii碼中的0~9,返回1;否則返回0 *   例子: isAsciiDigit(0x35) = 1. *            isAsciiDigit(0x3a) = 0. *            isAsciiDigit(0x05) = 0. *   允許的操作符: ! ~ & ^ | + << >> *   最多操作符數目: 15 *   分值: 3/* 

解題思路:若x是數字,則x在‘0’~‘9’之間。可以用x-48>=0和x-58<0(x+~48+1>=0和x+~58+1<0)來計算。

int isAsciiDigit(int x){    return !((x+~48+1)>>31)&!!((x+~58+1)>>31);}

 

電腦系統——資料表示實驗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.