最高位就是最左邊的一位,比如8位的二進制數1100 1010最高位為1 然后依次往右數,一般習慣稱最右邊的一位為第0位(2的0次方),或者最低位,所以對于8位二進制數,最高位就記作第7位.需要注意,比如8位二進制數 11 0010的最高位為0而不是1.
因為 11 0010 = 0011 0010.
為什么是最高位,這個是595的規定(也有其他的器件規定為先最低位的),就跟中國的車方向盤在左邊,英國的車方向盤在右邊一個道理.
SER=dat>>7;就是把dat這個8位二進制數右移7位后,賦值給SER,即將dat的最高位賦值給SER.注意是dat>>7,沒有賦值操作,所以執行后,dat的值沒有改變,原來是什么,現在還是什么.
dat<<=1;就是把dat原來的值左移一位,再賦值給dat,(這次有賦值操作,所以會改變原先的值)多出來的最低位自動用0來填充,比如dat原來為 1101 0111,執行了dat<<=1;后 dat為 1010 1110,其實就是將原數據的第6位(從左邊數第2位),移到第7位.等下次執行 SER=dat>>7;時,將之賦下一次的DAT,依此類推,直到執行完循環. |