-
是否要獲取此值或輸出類似 11100000 的字串?
如果你想得到乙個數字,有很多方法,你可以這樣寫:
long num = 12000;
char temp[5] = "";
long*)&temp[0] = num;
temp[0] 儲存較低的 8 位,temp[1] 儲存下乙個最高的......(小結尾是預設的)。
如果想輸出並轉換成字串,可以參考下面的get2string函式,完整的演示可以在下面找到**:
#include
using namespace std;
char * get2string(char num)
int i = 0;
char * buffer = null;
char * temp = null;
buffer = (char *)malloc(9);
temp = buffer;
for(i=0; i<8; i++)
temp[i] = num & 1 <<8 - i));
temp[i] = temp[i] >8 - i);
temp[i] = (temp[i] == 0) ?'0' : '1';
buffer[8] = '\0';
return buffer;
int main()
long num = 12000;
char temp[5] = "";
long*)&temp[0] = num;
for(int i=0;i<4;i++)printf("%s",get2string(temp[i]))
system("pause");
return 0;
-
房東可以通過置換操作來完成它。
-
使用中的 setprecision() 函式。
例如:cout “小數點後出現的數字將有兩位數字。
-
先用它"%f",x)
然後用 atof 轉換為數字。
這是最簡單的。
-
這相當於刪除最右邊的 4 位二進位檔案:
m_num = m_num >>4;
-
定義乙個陣列,將二進位數儲存在其中,然後取出其前幾位數字。
-
b1 = (m_num & 0x80)>>7;左位 b2 = (m num & 0x40)>>6; 第二位 b3 = (m num & 0x20)>>5; 左三位 b4 = (m num & 0x10)>>4; 左起第四位。
-
如果位數不確定,可以。
m_num =(m_num&0x0000ff00)>>4
-
使用按位和算術取出相應的數字並將其移動到最右側。
右 1 位數字 Do & 運算 2 的 0 次方, 右移 0 到 右 2 位 做 & 運算 2 的 1 次方, 右移 1 到 右 位 3 位 數字 做 & 運算 2 的 2 次方 做 & 運算, 右 移 2 到 右 位 第 i 位 做 & 運 算 到 2 的 i-1 冪, 向右移動到 i-1 數字。
右數 8 用 2 到 7 次冪做 & 運算,在以下示例中向右移動 7 位數字,迴圈,依次取出右數 1、2、3。 8 位:
#include
#include
int main()
return 0;輸出:
用於先將 I-1 位向右移動,然後對位執行相同的操作。
右 1 位 右移 0 位,然後做 & 1 操作,右數 i 右移 i-1 位,然後做 & 1 操作右 8 位 有 7 位,然後做 & 1 操作:
unsigned char c=0x33;
int b[8];
int i;
for (i=0;i<8;i++)
獲取:1 1 0 0 1 1 0 0
-
是這樣嗎,如果有問題,嗨,請討論一下。
#include
using namespace std;
typedef unsigned char byte;
byte *get_byte(char c)return p;
void main()
-
這裡有三種方法:
通過模 2 除以 2 (62616964757a686964616fe59b9ee7ad9431333366306434%2, 2)。
num%2 – 取出二進位檔案的最後一位。
num 2 - 向右移動以刪除二進位檔案的最後一位數字。
通過while迴圈,依次取出二進位的最後乙個數字,以確定它是否為1,如果為1,則count++,while(num)僅在num變為0時結束。
問題:測試 -1 時有乙個錯誤,-1 的二進位檔案中應該有 32 個 1,但輸出為 0。 我們把 -1 帶入 ** 中,發現 -1%2=0,計數不增加,然後 -1 2=0,迴圈結束,所以輸出計數的值為 0。
解決方法:將變數 num 的資料型別改為 unsigned int,表示正整數的最大值,這樣當 num=-1 時,表示二進位中有 32 個 1 的正數,正確的數字可以通過迴圈輸出。
這是通過右移運算子 (>> 按位運算子 (&) 實現的。
示例:當 num=10(1010) 時,通過向右移動 num>>i 來向右移動 num。
i=0, num>>0, 0 位向右, (1010)&(0001)=0
i=1, num>>1, 右移 1 位, (0101)&(0001)=1, count++
i=2, num>>2, 右移 2 位, (0010)&(0001)=0
i=3, num>>3, 右邊 3 位, (0001)&(0001)=1, count++
由於二進位有 32 位,迴圈需要執行 32 次才能結束,計數為 2。
缺點:效率不夠,必須迴圈32次。
這是通過巧妙的算術按位和運算子 (&) 實現的。
例如:當 num=15 時,1 num&(num-1)=(1111)&(1110)=(1110)。
2//num&(num-1)=(1110)&(1101)=(1100)
3//num&(num-1)=(1100)&(1011)=(1000)
4 num & (num-1) = (1000) & (0111) = 0,迴圈停止。 總共執行 4 個 while 迴圈。
-
例如,找到 10 (1010) 的第三位數字。
int a=10;
int b=a;
b=b>>(3-1)&1;
你得到的 B 是 10 的第三個位置。
-
使用運算子。
例如,1101 0011 是第 5 位數字,1101 0011 (1 5) 就足夠了。
-
#include
get bit 函式獲取 bainum 變數中的索引位。
int get_bit(int num, int index);
int main()
return 0;
int get_bit(int num, int index)
-
利用按位 bai 求和運算。
例如,杜說。
16 位二進位數 A:
1000 1000 1000 1000,如果你想得到哪個 DAO 的 ZHIA
輸入數字 b:
0000 0000 0000 0000 設定為 1
假設我想獲得 A 的第三名。
只需將 b 的第三位數字設定為 1,則 b 為。
0000 0000 0000 0100,將 A 和 B 相加後,如果結果為 0,則 a 的第三位數字為 0,結果為 1,a 的第三位數字為 1
同理:要得到 a 的第五位,將 b 設定為 。
在那之後,要求它。
通常在程式中。
數字 b 稱為掩碼,它是專門用於測試某個數字是否為 0 的值。
希望它對你有用。
-
移位運算按二進位計算,右移相當於除以2,左移乘以2,表示十進位不能移位達到位置,可以使用2、8、16。
但是還是有辦法的,就是用十六進製變數儲存你的小數變數,然後按十六進製移位取位,最後按十六進製輸出,這樣就可以達到你想要的效果
我要去上課了,你要是還寫不出來,問問吧,我回來幫你寫乙個。
-
這個想法是完全正確的,但我不知道你的第 4 位和第 7 位數字是從 0 還是 1 開始的。
如果最後一位數字是右邊的第乙個數字,則 b = a>>3
其他一切都很好。
-
%o 是八進位輸入。
嘗試使用 %d 或 %x 來更明顯地檢視測試結果。
-
無論二進位的第七位是否為1,都可以使用"按位使用"要判斷,**如下:
if (n&0x40)
二進位0x40是 0100 0000 b,這意味著第 7 位數字是 1
-
我試了**沒問題,我想也許你輸入的兩個數字之間的逗號是中文格式,所以第二個數字不會傳送。
-
請注意,輸入格式 123,456 的中間有乙個逗號,並且逗號必須為英文。 例項輸出:
max1=456
max2=456
請按任意鍵繼續。 .
#include ""
#include
int max(int x, int y);
void main()
int max(int x, int y)--
-
scanf("%d,%d",&a,&b);由於您的輸入,您必須輸入英文逗號,您可以將其更改為 scanf("%d%d",&a,&b);再試一次。
-
使用 cfile 類的 read() 函式; 他的返回值是已讀取的子字元數,例如 cfile f; "d:",可讀和可寫);
char sz[256]=;
int i=,256) 這裡是讀取次數。在這裡您可以看到一行有多少個字元,字元數 256 可以更改為 20,具體取決於情況。
乙個數字乘以 10 是原來的 10 倍,也可以說是原來的 9 倍,所以原來的 9 倍是 72,72 (10-1) = 8 >>>More
一種演算法,其中乙個數字是另乙個數字的百分之一:首先除法,計算結果,然後將其轉換為百分比。 那是:乙個數字,另乙個 100%。 >>>More