【c語言】將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數
<pre name="code" class="cpp">// 將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數 #include <stdio.h> // 從原數拿出最低位,放到mid中,mid左移,原數右移 int reverse(int a) { int mid = 0; int bit; int n = 32; for (; n > 0; --n) { bit = a & 1; mid <<= 1; mid |= bit; a >>= 1; } return mid; } int main() { printf("%u\n", reverse(1)); printf("%u\n", reverse(1073741824)); printf("%u\n", reverse(-1)); printf("%u\n", reverse(2147483647)); return 0; }
相關推薦
【c語言】將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數
<pre name="code" class="cpp">// 將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數 #include <stdio.h> // 從原數拿出最低位,放到mid中,mid左移,原數右移 int r
【C語言】求一個數的二進位制位模式從左到右翻轉後對應的十進位制值。
用函式unsigned int reverse_bit(unsigned int value)實現想要的功能 value是我們想要求的值。 #include <stdio.h> #include <math.h> unsigned
【C語言】求一個數的二進位制中 1 的個數
求一個數的二進位制的1的個數 1,通過模除的方法 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int i = 0;
【C語言】推斷一個數是否為2的n次方
post data- popu scanf scan ng- 輸入 ont print //推斷一個數是否為2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))
【C語言】判斷一個數是不是迴文數
所謂迴文數,就是說一個數字從左邊讀和從右邊讀的結果是一模一樣的。 首先,我們來判斷一下一個數是否為迴文數: #define _CRT_SECURE_NO_WARNINGS 1 #include&
【c語言】判斷一個數n能否同時被3和5整除
// 判斷一個數n能否同時被3和5整除 #include <stdio.h> int main() { int n; printf("請輸入一個整數:"); scanf("%d",&n); if( n % 3 == 0 &&
【C語言】判斷一個數的奇偶(位操作)
//判斷一個數的奇偶 #include <stdio.h> int is_signal(int num) { if (num & 1) return 1; else r
【C語言】判斷一個數是否為2的n次方
//判斷一個數是否為2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))) //去掉一個1
【C語言】將二進位制數逆序輸出。比如6為000...0110,逆序後為0110...000
//將二進位制數逆序輸出。比如6為000...0110,逆序後為0110...000 #include <stdio.h> unsigned int reverse_bit(int num
【C語言】求一千以內的素數 第一種方法
第一種方法:平常思維(人們第一印象會想到的) //什麼是素數? -- 除了1和本身之外不能被其他數整除的數 #include "stdio.h" int main(){ int n,j,f;//變數解釋:n為我們要判斷的數,j為要與n相除的數,f為標誌 0 表示不是素數
【C語言】互換兩個數的值的三種方法
我在第一次C語言學習的過程中,對於C語言的認識不夠深刻,我覺得這種解法已經非常厲害。畢竟能將簡單的兩個數的交換用計算機的邏輯編寫出來,並實現正確執行......int main() { int num1 = 10; int num2 = 20;
【C語言】求兩個數的最大公約數
思路: 輾轉相除法:以小的數除大數,所得的是整數,那這個數就是最大公約數,不然就用餘數來除剛才的除數,直到得到整數,這時作為除數的就是最大公約數。 #include<stdio.h>
【c語言】將兩個字串連線起來,不要用strcat函式
#include <stdio.h> int main() { char s1[80],s2[40]; int i=0,j=0; printf("input string1:"); scanf("%s",s1); printf("input strin
【c語言】有3個數a,b,c,要求按大小順序把它們輸出
// 有3個數a,b,c,要求按大小順序把它們輸出 #include <stdio.h> int main() { int a[3] ; int i,j; int temp; printf("請輸入a,b,c三個數: "); for( i = 0;
【c語言】輸入3個數,要求按從小到大順序輸出
// 輸入3個數,要求按從小到大順序輸出 #include <stdio.h> int main() { int a,b,c,t; printf("請輸入三個數:"); scanf("%d%d%d",&a,&b,&c); if
【C語言】實現對一個8bit資料的指定位的置0或者置1操作,並保持其他位不變。
給定函式原型:void bit_set(unsigned char *p_data,unsigned char positin,int flag) 引數說明:p_data是指定的源資料;position是指定位(取值範圍為1~8);flag表示置0還是
【C語言】一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現。
一看到這道題,我想到了之前學習過的異或。我們知道兩個相同的數字異或的結果是 0,因為在計算機中,異或運算是按照二進位制位來運算的,相同為 0 ,相異為 1。任何數與 0 異或都等於它自己。既然我們要找出來一組數中不同的兩個數字,也可以採用這種方法。 但是這次不是直接異或,
【C語言】輸入一個整數,輸出該數二進位制表示中1的個數(三種方法)
輸入一個整數,輸出該數二進位制表示中1的個數。如輸入32,輸出1.程式碼實現:方法1:與運算#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; int FindOne
【C語言】一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字。
要求:一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現。程式設計實現。 程式碼如下 int find(int arr[],int len) { int i,j,count; for(i = 0;i
【C語言】簡單思路找一個數組中重複次數最多的數
#include <stdio.h> int main() { int a[1024]; int b[1024] = {0}; //初始化每個數出現一次 int i = 0;