運算符面試題(劍指offer,面試寶典,牛客網)

  • 利用一個宏實現兩個數的交換?
  • 不使用if,?,switch或者其他判斷語句比較兩個變量的大小?
  • 利用位運算實現加法?
  • 以下程序輸出結果是?
  • 用位運算實現求平均數?
  • 不用循環判斷一個數是不是2的N次方?

利用一個宏實現兩個數的交換?

#include <iostream>
using namespace std;#define SWAP(a, b) 
{char tempbuf[10];  memcpy(tempbuf, &a, sizeof(a));  memcpy(&a, &b, sizeof(b));  memcpy(&b, tempbuf, sizeof(b));  
}int main()
{int a = 2;int b = 10;SWAP(a, b);cout<<a<<endl;cout<<b<<endl;return 0;
}

不使用if,?,switch或者其他判斷語句比較兩個變量的大小?

#include <iostream>
using namespace std;bool fun(int a, int b)
{return a > b;
}int max(int a, int b)
{bool flag = fun(a, b);return flag * a + (1 - flag) * b;//巧妙
}int main()
{return 0;
}
#include <iostream>
using namespace std;int max(int a, int b)
{return ((a + b) + abs(a - b)) / 2;
}int main()
{int a = 2;int b = 5;int n = max(a, b);cout<<n<<endl;return 0;
}

利用位運算實現加法?

#include <iostream>
using namespace std;int Add(int a, int b)
{if(b == 0){return a;}int sum, carry;sum = a ^ b;carry = (a & b) << 1;return Add(sum, carry);
}int main()
{int a = 10;int b = 245;cout<<Add(a, b)<<endl;return 0;
}

以下程序輸出結果是?

#include <iostream>
using namespace std;int main()
{unsigned char a = 0xa5;          //首先是1010 0101unsigned char b = ~a >> 4 + 1;   //~優先級位于第2 >> 位于第6 +位于第5  所以先取反,然后計算出5,然后右移5位//a 取反 0101 1010 但是會發生整數提升,即a提升為int型,即左邊補24個0,這時再右移5位變成//左邊24個1  加上  0101 1010,由于char是一個字節,所以取8位變成 1111 1010  即250//cout<<b<<endl;printf("%d\n", b);return 0;
}

用位運算實現求平均數?

#include <iostream>
using namespace std;int Average(int x, int y)
{return (x & y) + ((x ^ y) >> 1);
}int main()
{int a = 10;int b = 30;cout<<Average(a, b)<<endl;return 0;
}

不用循環判斷一個數是不是2的N次方?

#include <iostream>
using namespace std;int main()
{unsigned int a = 0;cout<<"Please input a number:";cin>>a;if((a & (a - 1)) == 0){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js 出現 replace 無法完全替換 指定字符串的時候的解決辦法

/{/g 通過這種方式替換掉 replace( /這里填寫需要被替換的字符串/g , "");

[WPS筆試題]實現棧的push,pop,max且時間復雜度為O(1)

今天做了一下WPS的筆試題&#xff0c;遇到了一道關于棧的題&#xff0c;覺得挺有意思的&#xff0c;就寫篇博客分享一下吧~~ 題目要求&#xff1a;要求實現棧的數據結構&#xff0c;在該類型中實現一個能夠得到棧的最大元素的max函數&#xff0c;在該棧中&#xff0c;調用max,…

MarkDown生成目錄索引

123 在第一行開頭寫[TOC] 必須是第一行&#xff0c;不可以在前面加別的東西。 1 2 3

ubuntu 如何用root身份進行登錄

公司有個小項目, 需要用python調用 sh腳本來執行一些東西, 執行腳本的時候需要輸入密碼 類似 sudo S paaswd 腳本, 但是給客戶部署的話, 再讓客戶客戶 保存密碼到配置文件, 就顯得麻煩, 就想到用root方式去登陸系統, 結果用了網上的方法, 還是登陸不進去, 最后結合簡書的一個方…

[劍指Offer]替換空格

今天看題的時候&#xff0c;遇到一個替換空格的題目&#xff0c;分析一下哈。 題目要求&#xff1a;把字符串中的每個空格替換成“%20”。例如輸入“we are happy”&#xff0c;則輸出“we%20are%20happy”。 解題思路&#xff1a;我們首先想到的是&#xff1a;移位思想。遇到…

C語言關鍵字 ISO/ANSI C90 C99 C11

面試考點 https://blog.csdn.net/csdn_kou/article/details/81113215 * 有的常用的我們都不知道是關鍵字&#xff0c;比如sizeof.這是面試中的考點&#xff0c;要注意。 * 同時當回答C語言中有多少關鍵字時&#xff0c;要回答前題條件&#xff0c;時針對哪一個版本

vm15 安裝 mac虛擬機的過程 轉載的

https://blog.csdn.net/weixin_43299649/article/details/82881567

task_struct解析

task_struct是Linux內核的一種數據結構&#xff0c;它用task_struct結構體來描述進程的信息。下面來剖析一下進程中保存的主要的信息有哪些&#xff1f; struct task_struct {//進程的運行時狀態volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */void …

ubuntu上有個小項目 ,需要調用xx.sh腳本, 出現無法識別 某些環境變量的解決辦法,僅供參考

項目是用python 調用 同事寫好的 xx.sh腳本&#xff0c; 在手動調用的時候 發現能正常調用&#xff0c; 當用python代碼的時候&#xff0c; 就不行了&#xff0c; 通過日志發現&#xff0c; python調用的時候 不識別 ADNROID_NDK這個環境變量&#xff0c; 在python中 我是通過&…

關于sudo

之前&#xff0c;我們使用sudo的時候&#xff0c;是因為其用戶本身具有root權限&#xff0c;所以可以sudo后執行相關操作&#xff0c;但是對于普通用戶來說&#xff0c;它是既不具有sudo權限&#xff0c;又不在sudo用戶組中&#xff0c;那么我們來研究一下如何將新創建的用戶添…

在使用 python 封裝的進程池 from concurrent.futures import ProcessPoolExecutor 遇到的問題

在ubuntu中&#xff0c;用的是python3.5 executeprebuildpath ExecutePrebuild()processpool ProcessPoolExecutor(1)processpool.submit(executeprebuildpath.run).add_done_callback(self.precallback)processpool.shutdown(waitFalse)self.runsign Trueself.runningprebu…

對pthread_create未定義的引用

pthread庫不是Linux系統默認的庫&#xff0c;連接時需要使用庫libpthread.a,在編譯中要加-lpthread [koulocalhost practive]$ gcc creat.c /tmp/ccPULtaF.o&#xff1a;在函數‘main’中&#xff1a; creat.c:(.text0x58)&#xff1a;對‘pthread_create’未定義的引用 coll…

Bash入門

Bash簡介&#xff1a; Bash&#xff08;GNU Bourne-Again Shell&#xff09;是一個為GNU計劃編寫的Unix shell&#xff0c;它是許多Linux平臺默認使用的shell。 shell是一個命令解釋器&#xff0c;是介于操作系統內核與用戶之間的一個絕緣層。準確地說&#xff0c;它也是能力…

ubuntu 設置分辨率 親測可用 轉載的

網上試了很多方法, 這家管用 https://blog.csdn.net/qq_35661436/article/details/72802040

線程之售票系統pthread_mutex,_lock,_unlock

先看一下這篇文章 https://blog.csdn.net/csdn_kou/article/details/81148268 四個人同時買票票&#xff0c;引出線程 #include "head.h" int ticket 100; void * route(void *arg) {char *id (char *)arg;while(1){if(ticket>0){usleep(1000);printf("…

Bash基本語法

1. 變量賦值 a375 hello$a 這里需要注意的是&#xff0c;等號兩邊不能有空格 還有一個例子是這樣的 例1&#xff1a; 結果為&#xff1a; 關于上述&#xff0c;主要有如下幾點&#xff1a; $hello和${hello}是一樣的&#xff0c;在bash中如果遇到空格&#xff0c;tab鍵時&a…

windows下 , py運用了 進程池, 將py打包成exe,出現錯誤的 解決思路之一

在windows上,用pycharm開發了一個小項目, 用到了from concurrent.futures import ProcessPoolExecutor 本來在pycharm里面,運行的好好地, 可是打包成exe的時候, 發現 當程序運行到 進程池執行任務的時候,會創建一個新的界面, 猜測應該是創建了一個新的進程, 百度后,發現在 程序…

關于fd和fp(fd:file descirptor fp:file pointor)

通常&#xff0c;我們在輸入數據或輸出數據的設備為鍵盤或者顯示器。當然&#xff0c;我們比較熟悉的輸入輸出&#xff0c;可能就是對于文件的操作&#xff0c;還有直接從終端輸出&#xff0c;顯示到顯示器上。在C語言中&#xff0c;我們使用fopen,fclose,fread,fwrite對文件進…

粗談pragma once與 #ifndef的區別

#ifnde不受編譯器的任何限制&#xff1b; #pragma once不受一些較老的編譯器支持&#xff0c;兼容性不夠好