#include<stdio.h>
main()
{
int x=58,y=-58;
x=x>>3; /*x右移3位*/
y=y>>3; /*y右移3位*/
printf("the result1 is:%d,%d\n",x,y);
x=x>>2; /*x右移2位*/
y=y>>2; /*x右移2位*/
printf("the result2 is:%d,%d\n",x,y);
}
uj5u.com熱心網友回復:
理解計算機內的存盤方式吧。計算機內以補碼方式存盤。以32位為例
存盤58,
58的原碼:0000 0000 0011 1010
58的補碼和原碼一樣,右移三位成為。0000 0000 0000 0111,也就是7.
-58的原碼:1000 0000 0011 1010
-58的補碼:1111 1111 1100 0110
右移三位:1111 1111 1111 1000
這個的原碼也就是再求他的補碼,為 1000 0000 0000 1000,體現出來就是-8.
所以不能以自己的想法來讓計算機服從與你。
uj5u.com熱心網友回復:
移位和除法不完全一樣
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/102972.html
標籤:基礎類
上一篇:win8.1 VS2012 提升注冊表權限(非以管理員身份運行)
下一篇:求助:編程挑戰
