11110000的原碼求法如下:
首先取反運算“~”是壹個單目運算符,運算量在運算符之後,取反運算的功能是將壹個數據中所有位都取其相反值,即1變0,0變1,後壹個因為a是帶符號數據。
因此~a=(11101101)2的結果是壹負數的補碼,轉換為原碼時,第1位符號位不變,對剩余的部分先減1,再全部取反,因此得到的二進制原碼為:10010011,即十進制的-19。
左移運算。
對於帶符號數a,因a<<3得到的(10010000)2,是壹負數的補碼,轉換為原碼時,第1位符號位不變,對剩余的部分先減1,再全部取反,因此得到的二進制原碼為:11110000,即十進制的-112。
對於無符號數來說,在左移的過程中如果沒有高位的丟失,左移1位相當於乘2,左移2位相當於乘4。左移運算速度較快,因此有些C編譯系統自動將乘2的操作用左移1位來實現,將2的n次冪運算用左移n位來實現。