关于C语言的基础问题。(位运算、补码) C语言进行位运算是不是都是补码形式进行的?

C\u8bed\u8a00\u539f\u7801\u8865\u7801\u6309\u4f4d\u8fd0\u7b97\u95ee\u9898!

int\u7c7b\u578b\u4e00\u822c\u662f16\u4f4d,\u6bd4\u59821\u5c31\u662f0000 0000 0000 0001,\u5176\u4e2d\u6709\u7b26\u53f7\u6570\u7b2c\u4e00\u4f4d\u662f\u7b26\u53f7\u4f4d,\u6b63\u662f0,\u8d1f\u662f1;
-20\u8f6c\u6362\u4e3a\u4e8c\u8fdb\u5236\u6309\u89c4\u5219\u5e94\u8be5\u662f 1000 0000 0001 0100;\u8fd9\u4e2a\u5c31\u662f\u539f\u7801,\u4f46\u662f\u8ba1\u7b97\u673a\u4e2d\u4e0d\u662f\u8fd9\u4e48\u5b58\u50a8\u7684;
\u7136\u540e\u5c06\u7b26\u53f7\u4f4d\u4ee5\u5916\u7684\u8fd915\u4f4d\u53d6\u53cd,\u5f97\u5230,1111 1111 1110 1011;\u8fd9\u4e2a\u53eb\u53cd\u7801
\u4e4b\u540e\u518d\u52a0\u4e0a1,\u5f97\u5230,1111 1111 1110 1100;\u8fd9\u4e2a\u662f\u8865\u7801(\u8ba1\u7b97\u673a\u4e2d\u5b58\u50a8\u7684-20)
\u4ece\u4e00\u4e2a\u4e8c\u8fdb\u5236\u6570\u53cd\u63a8\u56de\u5341\u8fdb\u5236,\u6309\u76f8\u53cd\u7684\u987a\u5e8f\u8ba1\u7b97\u5373\u53ef.

\u4f4d\u8fd0\u7b97>>,\u5c31\u662f\u5411\u53f3\u4f4d\u79fb\u4e00\u5b9a\u4f4d\u6570,\u6b63\u6570\u88650,\u8d1f\u6570\u88651;
\u6240\u4ee5-20>>3\u5c31\u662f111 1111 1111 1110 1(\u5de6\u8fb9\u8865\u51fa3\u4e2a1,\u53f3\u8fb9\u7684100\u4e22\u5931)
\u5f97\u52301111 1111 1111 1101,\u8fd9\u4e2a\u662f\u8865\u7801,(\u8ba1\u7b97\u673a\u4e2d\u7684\u6570)
\u51cf1\u5f971111 1111 1111 1100,\u8fd9\u4e2a\u662f\u53cd\u7801;
\u53d6\u53cd\u5f971000 0000 0000 0011,\u8fd9\u4e2a\u662f\u539f\u7801;(\u65b9\u4fbf\u6211\u4eec\u8bc6\u522b\u7684\u6570)
\u4e5f\u5c31\u662f\u5341\u8fdb\u5236\u7684-3.

\u4f60\u8bf4\u7684\u8865\u7801\u8fd0\u7b97\uff0c\u4e0d\u662fC\u8bed\u8a00\u7684\u4e8b\u60c5\uff0c\u662f\u8ba1\u7b97\u673a\u81ea\u5df1\u7684\u4e8b\uff08\u4e8c\u8fdb\u5236\u8fd0\u7b97\uff09\u3002
\u5728C\u8bed\u8a00\u4e2d\uff0c\u5404\u79cd\u8ba1\u7b97\u65b9\u6cd5\u548c\u751f\u6d3b\u4e2d\u7684\u4e00\u6837\uff0c\u6ca1\u6709\u4ec0\u4e48\u8865\u7801\uff0c\u539f\u7801\u7684\u3002\u3002
\u5728\u4e8c\u8fdb\u5236\u8ba1\u7b97\u4e2d\uff0c\u6211\u77e5\u9053\u51cf\u6cd5\u662f\u8981\u7528\u8865\u7801\u6765\u8fd0\u7b97\u7684\uff0c\u52a0\u6cd5\uff0c\u4f4d\u8fd0\u7b97\uff0c\u903b\u8f91\u8fd0\u7b97\u90fd\u662f\u539f\u7801\u76f4\u63a5\u8ba1\u7b97\u3002\u8865\u7801\u8fd0\u7b97\u5177\u4f53\u8fc7\u7a0b\u4e0d\u6e05\u695a\u4e86\u3002

补码是现在最常用的一种数据编码方式,对于无符号数,补码和其值是一样的,而对于有符号数有点区别。
补码表示有符号数时,第一位表示正负号,1为-,0为+,所以i是0xFFFFFF,全部为1,则i为负数,当其为负数时,值的求法是去掉符号位,剩下的取反+1,那么就是0+1=1,所以i的值是-1

要理解为什么不同应该先去看一下补码的编码规则,而不是看二进制的运算

进制之间的转换可以看看http://hi.baidu.com/cs123/blog/item/20322e2ec19965534ec226ec.html,这篇文章讲得非常详细

  • 甯垜瑙e喅涓涓C璇█鐨棰樼洰 浣嶈繍绠
    绛旓細棣栧厛瑙i噴涓鍩虹鐭ヨ瘑 浣嶈繍绠,鏄寜浜岃繘鍒朵綅璁$畻,瑕佹妸杩愮畻閲忓彉涓轰簩杩涘埗杩涜瀵逛綅璁$畻 &浣嶄笌,涓よ繍绠楅噺,鑻ラ兘鏄1杩愮畻缁撴灉鏄1,鍏朵粬鎯呭喌缁撴灉涓0 |浣嶆垨,涓よ繍绠楅噺,鑻ラ兘鏄0杩愮畻缁撴灉鏄0,鍏朵粬鎯呭喌缁撴灉涓1 ^浣嶅紓鎴,涓よ繍绠楅噺,鑻ョ浉鍚,杩愮畻缁撴灉鏄0,涓嶇浉鍚,缁撴灉涓1 ~浣嶉潪,鍗曡繍绠楅噺,鍙栧弽,1涓0,0涓1 x,缁撴灉...
  • C璇█,鍝綅濂藉績鐨勫ぇ鍝,濮愬:鑳藉憡杩版垜浣嶈繍绠鍚?鎴戠湅涓嶆噦鍟!
    绛旓細浣嶈繍绠绠浠嬪強瀹炵敤鎶宸(涓):鍩虹绡 浠涔堟槸浣嶈繍绠? 绋嬪簭涓殑鎵鏈夋暟鍦ㄨ绠楁満鍐呭瓨涓兘鏄互浜岃繘鍒剁殑褰㈠紡鍌ㄥ瓨鐨勩備綅杩愮畻璇寸┛浜,灏辨槸鐩存帴瀵规暣鏁板湪鍐呭瓨涓殑浜岃繘鍒朵綅杩涜鎿嶄綔銆傛瘮濡,and杩愮畻鏈潵鏄竴涓昏緫杩愮畻绗,浣嗘暣鏁颁笌鏁存暟涔嬮棿涔熷彲浠ヨ繘琛宎nd杩愮畻銆備妇涓緥瀛,6鐨勪簩杩涘埗鏄110,11鐨勪簩杩涘埗鏄1011,閭d箞6 and 11鐨勭粨鏋滃氨...
  • 鍏充簬C璇█鐨勪綅杩愮畻~鐨闂,姹傚姪!
    绛旓細int閲岀涓浣嶆槸绗﹀彿浣嶏紝0浠h〃姝f暟锛屼唬琛ㄨ礋鏁般傚苟涓旀鏁扮敤鍘熺爜鍌ㄥ瓨锛岃礋鏁扮敤琛ョ爜鍌ㄥ瓨锛堣繖鏍峰仛鏄兘灏嗕簩杩涘埗鍔犳硶涓庡噺娉曠粺涓锛岃嚜宸辨偀涓涓嬶紝寰堥珮鏄庣殑鏂规硶锛夈11110010 绗竴浣嶆槸1 鎵浠ユ槸璐熸暟锛屾墍浠ユ槸琛ョ爜銆傝ˉ鐮佽浆鍘熺爜瑕佸彇鍙嶅姞涓锛堥櫎浜嗙鍙蜂綅锛夛紝鎵浠ュ彇鍙10001101銆傚啀鍔犱竴10001110 灏辨槸-14浜嗐傛墜鏈烘墦瀛楋紝甯屾湜...
  • c璇█浣嶈繍绠鐨勭粨鏋滄槸浠涔?
    绛旓細缁撴灉锛2561327494111820313銆C璇█浣嶈繍绠 鏈6绉嶏細 &锛 | , ^(浜︽垨)锛 <<(宸︾Щ)锛 >>(鍙崇Щ)銆傛敞鎰忥細鍙備笌浣嶈繍绠楃殑鍏冪礌蹇呴』鏄痠nt鍨嬫垨鑰卌har鍨嬶紝浠ヨˉ鐮佸舰寮忓嚭鐜般傛寜浣嶄笌& &杩愮畻甯稿簲鐢ㄤ簬锛氳繀閫熸竻闆躲佷繚鐣欐寚瀹氫綅銆佸垽鏂鍋舵с俛 & 1 = 1;鍒檃涓哄鏁 b & 1 = 0;鍒檃涓哄伓鏁 ...
  • C璇█浣嶈繍绠鐨勯~~~
    绛旓細涓轰簡绠鍗曚簺,灏辩敤8浣嶈繘鍒舵潵琛ㄧず,涓鑸琲nt鏄32浣嶇殑,澶暱灏变笉鍐欎簡 27鐨勪簩杩涘埗鏄0001 1 011 b=27>>3,鍚戝彸绉诲姩涓変綅,缁撴灉鏄0000 0011,灏辨槸鍘绘帀鍚庨潰鐨011 0鐨勪簩杩涘埗鏄0000 0000 ,~0鏄弽杩囨潵,1111 1111 ,<<3鍚戝乏绉讳笁浣,缁撴灉鏄1111 1000 鍐崀鍙嶄竴涓,缁撴灉鏄0000 0111 b&c灏辨槸 0000 0011 0000 0...
  • C璇█浣嶈繍绠
    绛旓細C璇█鎻愪緵鐨勪綅杩愮畻锛 杩愮畻绗 鍚箟 & 鎸変綅涓 | 鎸変綅鎴 鈭 鎸変綅寮傛垨 鈭 鍙栧弽 << 宸︾Щ >> 鍙崇Щ 璇存槑锛1銆備綅杩愮畻绗︿腑闄も埥浠ュ锛屽潎涓轰簩鐩(鍏)杩愮畻绗︼紝鍗宠姹備袱渚у悇鏈変竴涓繍绠椾簡閲忋2銆佽繍绠楅噺鍙兘鏄暣褰㈡垨瀛楃鍨嬬殑鏁版嵁锛屼笉鑳戒负瀹炲瀷鏁版嵁銆 鈥滄寜浣嶄笌鈥濊繍绠楃锛&...
  • C璇█鍏充簬浣嶈繍绠楃殑闂
    绛旓細鍥犱负pr("%o",n);涓殑%o骞舵病鏈夊憡璇塸rintf鍑芥暟n鏄痵hort鍨嬨傚叾瀹炰綘鐨勬効鏈涙槸瀹炵幇涓嶄簡鐨勶紝printf瀵规暣鍨嬫暟鍙湁long int(%ld)鍜宨nt(%d)涔嬪垎锛屾瘮int杩樼煭鐨勫湪杈撳嚭鏃堕兘瑕佽嚜鍔ㄦ墿灞曚负int鍨嬬殑銆備綘鍙互鎶妏r("%o",n);鍐欐垚pr("%o",(char)n);涓璇曪紝缁撴灉浼氭槸涓鏍风殑鈥斺斿氨鏄鍗充究n鏄彧鏈8浣嶇殑char鍨嬶紝...
  • C璇█浣嶈繍绠楅棶棰
    绛旓細person[j]= (i>>(3*j))&7 鍋囪姝ゆ椂i=24銆乯=1锛岄偅涔坕>>(3*j)灏辩浉褰撲簬24>>3锛屾剰鎬濆氨鏄妸24杩欎釜鏁版崲鎴愪簩杩涘埗鍚庝篃灏辨槸00011000鐨勫悇浣嶅悜鍙崇Щ鍔3浣嶏紝鍙樻垚00000011鍗3銆傜劧鍚庡啀绠3&7锛屾剰鎬濇槸鎶3鍜7鎸変綅杩涜涓杩愮畻锛岀浉褰撲簬00000011&00000111=00000011=3锛屾墍浠ユ渶鎬荤粨鏋滃氨鏄痯erson[1]=3銆備互姝...
  • C璇█涓綅杩愮畻绗︾殑缁撴灉涓0杩樻槸1鍛?
    绛旓細1&1=1;鍗筹細涓や綅鍚屾椂涓衡1鈥濓紝缁撴灉鎵嶄负鈥1鈥濓紝鍚﹀垯涓0銆傛寜浣嶄笌杩愮畻 鎸変綅涓庤繍绠楃鈥&鈥濇槸鍙岀洰杩愮畻绗︺傚叾鍔熻兘鏄弬涓庤繍绠楃殑涓ゆ暟鍚勫搴旂殑浜岃繘浣嶇浉涓庛傚彧瑕佸搴旂殑浜屼釜浜岃繘浣嶉兘涓1鏃讹紝缁撴灉浣嶅氨涓1銆傚弬涓庤繍绠楃殑涓や釜鏁板潎浠ヨˉ鐮佸嚭鐜般 渚嬪锛3&10鍙啓绠楀紡濡備笅锛 00000011&00001010 00000010 鍗佽繘鍒2銆
  • C璇█浣嶈繍绠楅棶棰
    绛旓細鏄塂 棣栧厛瑕佺煡閬揷1鐨勪簩杩涘埗鏄11111111锛宑2鏄0 c1鍙崇Щ涓や綅灏辨槸00111111锛屼笌c2浣嶆垨灏卞緱0011111111锛屾墍浠1鍊煎彉涓3f 鐒跺悗c1鏄00111111锛026涓10011110锛屽彇浣嶅紓鎴栧緱10100001锛屾墍浠2鍊煎彉涓篴1
  • 扩展阅读:扫一扫题目出答案 ... c#基础练习题 ... c++编程入门自学 ... c#面试常见问题 ... c#面试题 ... c#入门基础知识 ... c#考试题库 ... c语言面试题及答案 ... c#基础知识面试 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网