對於乙個正整數,移位都比較清楚,但對乙個負數移位的結果如何呢?
直接做測試,**如下:
unsigned short value_test;
int result_test;
value_test = 0xe100; // -(31 << 8)
result_test = ((short)value_test >> 8);
printf("-(31 << 8) >> 8[%d] ", result_test);
value_test = 0xe100; // -(31 << 8)
result_test = ((short)value_test << 2);
printf("-(31 << 8) << 2[%d] ", result_test);
value_test = 0x1f00; // (31 << 8)
result_test = ((short)value_test >> 8);
printf(" (31 << 8) >> 8[%d] ", result_test);
value_test = 0x1f00; // (31 << 8)
result_test = ((short)value_test << 2);
printf(" (31 << 8) << 2[%d] .\r\n", result_test);
value_test = 0xf200; // -(14 << 8)
result_test = ((short)value_test >> 8);
printf("-(14 << 8) >> 8[%d] ", result_test);
value_test = 0xf200; // -(14 << 8)
result_test = ((short)value_test << 2);
printf("-(14 << 8) << 2[%d] ", result_test);
value_test = 0xe00; // (14 << 8)
result_test = ((short)value_test >> 8);
printf(" (14 << 8) >> 8[%d]", result_test);
value_test = 0xe00; // (14 << 8)
result_test = ((short)value_test << 2);
printf(" (14 << 8) << 2[%d] .\r\n", result_test);
輸出結果為:
-(31 << 8) >> 8[-31] -(31 << 8) << 2[-31744] (31 << 8) >> 8[31] (31 << 8) << 2[31744] .
-(14 << 8) >> 8[-14] -(14 << 8) << 2[-14336] (14 << 8) >> 8[14] (14 << 8) << 2[14336] .
得出的結果為: 對負數,
1. 不化是左移,還是右移, 其符號位不變,
2. 對於負數移位,除開符號位外,移位的結果和其絕對值移位的值相等.
jquery正規表示式驗證 非負整數
需求說明 前端頁面使用正規表示式驗證文字輸入框輸入的資料為非負整數。說明 這裡只介紹正規表示式部分,其他部分的 不做介紹。如有需要可自行修改。步驟一 建立乙個頁面可以是html jsp等,引入jquery 3.2.1.min.js 其他版本亦可 步驟二 編寫正規表示式。部分如下 doctype ht...
包含負整數的桶排序
我們平常所用的陣列桶排序,在資料分布較為均勻的情況下,在速度上相對很多排序都有著極大的優勢。但在處理負值時卻擁有短板。因為陣列的下標無法為負值。這裡,我提供了兩種解決方法 1.int a,i,max,min,dev,b n min max b 0 for i 0 i if b i max max b...
不含連續1的非負整數
給定乙個正整數 n,找出小於或等於 n 的非負整數中,其二進位制表示不包含 連續的1 的個數。示例 1 輸入 5 輸出 5 解釋 下面是帶有相應二進位制表示的非負整數 5 0 0 1 1 2 10 3 11 4 100 5 101 其中,只有整數3違反規則 有兩個連續的1 其他5個滿足規則。說明 1...