1樓:匿名使用者
11110001右移4位,有不同的右移操作。如果是邏輯右移的話,11110001右移4位之後,得00001111(左側補0);但如果是算術右移的話,11110001右移4位之後,得11111111(左側不變)。
2樓:做而論道
首先-15算不算有符號數?
算。-15用二進位制如何表示?
即:-1111。
15的二進位制是1111,-15的二進位制數是不是15取反+1,-(1111)+1,結果是0001,這個結果那符號位不是負數1啊?
錯了。其中的這一句:-15的二進位制數是不是15取反+1,...
不是。還是11111,最高位1表示負數,1111表示15,這樣是-15?
不是。1111,如果是補碼,它就是代表 -1。
1111,如果是原碼,它就是代表 -7。
暈頭轉向,我學得很不好,希望高手給指點。
其次假設a的二進位制是負數10100110,它的十進位制怎麼計算?
負數,前面要有一個負號:"-"。
10100110,這裡並沒有寫負號,這就是正數。
它的十進位制怎麼計算?--你想要算什麼?加、減、乘、除?
-----------
看來,樓主是沒有分清《數》和《碼》的關係。
對於一個數字,無論它是什麼進位制,負號,都要寫成 "-" 。
變成《補碼》、《移碼》等等之後,才用數字來代表負號。
當用數字代表了符號,就再也不要說這是某某數了,而要說,這是某某數的什麼碼。
另外,變換的時候,應先說明位數,以便給符號,明確一個位置。
c語言中的右移一位是不是應該除以2
3樓:非常可愛
右移一來位相當於除以2。
例:5>>1
5的二自進bai製表示是101,那麼右移一位之du後是zhi10就是2了,是整除的;左移的dao話就是在後面補一個零,相當於是乘以二,那麼變成了1010,十進位制是10。
101右移,就是把最後一位拿掉了,是10這個是二進位制的,十進是2,5/2本來是小數,但這裡是整數操作的,所以把小數部分去掉了。
擴充套件資料
c語言中的左移
1、左移就是把一個數的所有位都向左移動若干位,在c中用《運算子.例如:
inti=1;
i=i<<2;//把i裡的值左移2位。
2、補符號位,就是一個signedchara=0xff;
a=a>>1;/*它仍是0xff,補了符號位。最高位是符號位=1,右移後符號位保持不變*/;
a=0x80;
a=a>>1;/*變成了0xc0*/
a=0x1f;
a=a>>1;/*變成了0x0f,因為它開始的符號位就是0*/。
4樓:幸巴達
(usartdiv - usartdiv_zhengshu)* 16相當bai於(usartdiv - usartdiv_zhengshu)<<4
左移du4位。
你理zhi解的是
dao對的。貌似是專寫**錯了
右移一位屬相當於除以2.
5樓:匿名使用者
不是c語言的有符號整數向右移位運算不等同於除以2的某次冪
如(-1)/2和(-1)>>1,前者的回結果一般答是0,後者一般是-1,所以在c語言中,負數向右移動1位並不等同於除以2。
解決的方法是:當除數是2的n次冪時,x/(2^n),可以用移位操作(x + 2^n - 1) >> n來代替(x + 2^n - 1須小於0,^是乘方操作)
在c語言中,-100/8=-12,而-100>>3=-13,兩者不相等,而用(-100+7)>>3代替則相等。
什麼是二進位制?二進位制怎麼算,二進位制是什麼意思,怎麼算
兜轉瞬間 二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數,它的基數為2,進位規則是逢二進一。二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數。它的基數為2,進位規則是逢二進一,借位規則是借一當二,由18世紀德國數理哲學大師萊布尼茲發現...
二進位制(10012轉八進位制,二進位制(10011100 01)2轉八進位制
二進位制 10011100 01 2轉八進位制為 234 2 8。二進位制化為八進位制整數部份從最低有效位開始,以3位一組,最高有效位不足3位時以0補齊,每一組均可轉換成一個八進位制的值,轉換完畢就是八進位制的整數。因此10011100 010 011 100 234。小數部份從最高有效位開始,以3...
c語言 二進位制轉十六進位制,C語言 二進位制轉十六進位制
看看這個行不行?希望對你有幫助 include stdafx.h include stdio.h include string.h include conio.h include stdlib.h void convert char input,char output for ii nx ii9 0...