負整數移位的問題驗證

2021-09-21 07:21:39 字數 1545 閱讀 8240

對於乙個正整數,移位都比較清楚,但對乙個負數移位的結果如何呢?

直接做測試,**如下:

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...